程序需要python和js混合編程,如何在python獲取js中變數的值。
是web的話,用http通信就好了
用python selenium吧,通過selenium代理python和瀏覽器之間的通信。
如果非要糾結是否遠程調用而不是本地數據調用,可以試試PyQt4,
裡面有一個QWebKit模塊(最新版本的PyQt5去掉Webkit了用的另外一個模塊),
PyQt5和PyQt4功能雷同,可以認為是2個分支
Webkit裡面有Python和JS的交互,甚至你可以用PyQt4做一個瀏覽器
2. python 怎麼使用pywebkitgtk包
#!/usr/bin/python
import os
os.environ["DISPLAY"] = ":1" #設置顯示設備為1,該設備為Xvfb虛擬,具體可搜索Xvfb
import gtk
import webkit
import jswebkit
def show_result(view, frame):
print frame.get_title()
print frame.get_uri()
#JSctx = frame.get_global_context()
#ctx = jswebkit.JSContext(JSctx)
#text = ctx.EvaluateScript('document.documentElement.innerHTML')
#print str(text)
webview=webkit.WebView()
sw = gtk.ScrolledWindow()
sw.add(webview)
win = gtk.Window(gtk.WINDOW_TOPLEVEL)
win.add(sw)
win.show_all()
webview.connect( 'load-finished', show_result )
webview.load_uri('httom')
frame = webview.get_main_frame()
JSctx = frame.get_global_context()
gtk.main()
3. python 用什麼模塊處理網頁的javascript
lxml 配合 html5lib
可以很好的解析 html DOM
但對於js的解析 據我所知現在沒有什麼很成熟的模塊能做這個
解析js肯定不是正則能辦得到的, 比較現實的方案是
從webkit下手, 但光這一個庫就有10+M
(利用webkit自己解析js等解析完之後讀取html dom, 什麼時候解析完,什麼內容需要解析,什麼內容不應該解析是使用的難點)
如果你碰到的js代碼比較簡單
可以自己看看js代碼然後使用python模擬js代碼得到網址
其中使用webkit是最難的(不是簡單顯示界面,需要自己hook)
模擬js其次
lxml是最普遍的了
(這個解析一般的html必須配合其他html解析庫,自帶的那個html解析不是很健壯碰到稍微差點的頁面就不能正確解析)
另外html DOM 裡面 beautifulsoup 是一個比較老道的使用正則實現解析HTML DOM的庫.
4. python-webkit怎麼安裝
基於IE內核的瀏覽器直接用VB編寫即可。引用WEBbrowser就可以了。復雜的操作可能要實現某些介面,比如攔截下載事件等。這部分用VB比較復雜,用Delphi比較合適。 webkit有現成封裝的ActiveX,可以直接被VB調用。
5. 如何用python爬取js渲染載入的視頻文件
可以使用selenium+ phantomjs
PhantomJS是一個基於webkit的JavaScript API。它使用QtWebKit作為它核心瀏覽器的功能,使用webkit來編譯解釋執行JavaScript代碼。任何你可以在基於webkit瀏覽器做的事情,它都能做到。它不僅是個隱形的瀏覽器,提供了諸如CSS選擇器、支持Web標准、DOM操作、JSON、HTML5、Canvas、SVG等,同時也提供了處理文件I/O的操作,從而使你可以向操作系統讀寫文件等。PhantomJS的用處可謂非常廣泛,諸如前端無界面自動化測試(需要結合Jasmin)、網路監測、網頁截屏等。
6. 如何用python爬取js動態生成內容的頁面
抓取js動態生成的內容的頁面有兩種基本的解決方案
1用dryscrape庫動態抓取頁面
js腳本是通過瀏覽器來執行並返回信息的,所以,抓取js執行後的頁面,一個最直接的方式就是用python模擬瀏覽器的行為。WebKit 是一個開源的瀏覽器引擎,python提供了許多庫可以調用這個引擎,dryscrape便是其中之一,它調用webkit引擎來處理包含js等的網頁!
2 selenium web測試框架
selenium是一個web測試框架,它允許調用本地的瀏覽器引擎發送網頁請求,所以,它同樣可以實現抓取頁面的要求。