程序需要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测试框架,它允许调用本地的浏览器引擎发送网页请求,所以,它同样可以实现抓取页面的要求。