如何用python抓取js生成的数据 - SegmentFault
如何用python抓取js生成的数据
想写一个爬虫,但是需要抓去的的数据是js生成的,在源代码里看不到,要怎么才能抓到呢? 最好是用python
7 个回答
如果对抓取的性能没有什么要求的话, 尝试一下selenium或者watir吧.
web自动化测试脚本用好了可以做很多事情.
利用你的浏览器执行好js, 然后再从dom里面取数据.另外一个情况, 如果你知道js是通过ajax或者api取数据的, 直接去抓数据源, 得到的不是json就是xml, 然后处理数据吧
基于webkit的http://phantomjs.org/,写js就行。
用python调它,用起来很爽。
对于JS生成的数据,你是没有办法获取的。除非直接遍历dom还是有可能……
一种办法是可以考虑用userscript,获取数据然后post到服务器等就随你自己的喜欢了
还有一种办法(假设是在win32),可以使用com组件调用IE然后获取动态生成的dom树,然后再做处理
当年试过改firefox的程序来做这个,不过也很麻烦
当然,你也可以用python什么自己实现一套浏览器和js引擎,那么这些数据肯定是你自己的了,不过还不如直接改或者用com组件
但是你说的爬虫爬取js生成的,那是没有办法的:(不管怎么样,一定要实现dom树,要让js能执行,那么就相当于你要实现一套简单的浏览器了
可以试着用 http://jeanphix.me/Ghost.py/ , http://code.google.com/p/pyv8/ 获得 JS 执行后的 dom。
目前认为比较好的一个方案是采用python+gtk+pywebkit,相当于基于webkit自己写一个定制的浏览器,这样可以在网页中插入自己的js,遍历dom等都是非常容易的。这个组合在ubuntu下还是非常容易搭建的。
sudo apt-get install python-gtk python-webkit,即可。