如何用python抓取js生成的数据 - SegmentFault

2023-05-31,,

如何用python抓取js生成的数据 - SegmentFault

如何用python抓取js生成的数据

1赞 踩 收藏

想写一个爬虫,但是需要抓去的的数据是js生成的,在源代码里看不到,要怎么才能抓到呢? 最好是用python

链接

Yiner224

2012年11月22日提问

显示评论 (4条)
您还没有登录, 请登录后添加评论

得票数 时间先后

7 个回答

<!--
赞助商广告

-->

3赞 踩
采纳

如果对抓取的性能没有什么要求的话, 尝试一下selenium或者watir吧.
web自动化测试脚本用好了可以做很多事情.
利用你的浏览器执行好js, 然后再从dom里面取数据.

另外一个情况, 如果你知道js是通过ajax或者api取数据的, 直接去抓数据源, 得到的不是json就是xml, 然后处理数据吧

链接

KJ919

2012年11月22日回答

2
Felix · 2012年11月23日

http://phantomjs.org/ 更简单

1
cattail · 2012年11月27日 回复Felix:

看起来不错,我以前一直在幻想有没有记录鼠标和键盘操作,甚至于想动手写一个,现在竟然发现了http://casperjs.org/,怎一个感谢了得!

更多评论 (4条)
您还没有登录, 请登录后添加评论


3赞 踩
采纳

基于webkit的http://phantomjs.org/,写js就行。
用python调它,用起来很爽。

链接

Felix48

2012年11月23日回答

显示评论 (4条)
您还没有登录, 请登录后添加评论


1赞 踩
采纳

对于JS生成的数据,你是没有办法获取的。除非直接遍历dom还是有可能……

一种办法是可以考虑用userscript,获取数据然后post到服务器等就随你自己的喜欢了

还有一种办法(假设是在win32),可以使用com组件调用IE然后获取动态生成的dom树,然后再做处理

当年试过改firefox的程序来做这个,不过也很麻烦

当然,你也可以用python什么自己实现一套浏览器和js引擎,那么这些数据肯定是你自己的了,不过还不如直接改或者用com组件

但是你说的爬虫爬取js生成的,那是没有办法的:(不管怎么样,一定要实现dom树,要让js能执行,那么就相当于你要实现一套简单的浏览器了

链接

巫山霏云120

2012年11月22日回答

添加评论
您还没有登录, 请登录后添加评论


1赞 踩
采纳

可以试着用 http://jeanphix.me/Ghost.py/ , http://code.google.com/p/pyv8/ 获得 JS 执行后的 dom。

链接

Q.yuhen16

2012年11月22日回答

添加评论
您还没有登录, 请登录后添加评论


0赞 踩
采纳

目前认为比较好的一个方案是采用python+gtk+pywebkit,相当于基于webkit自己写一个定制的浏览器,这样可以在网页中插入自己的js,遍历dom等都是非常容易的。这个组合在ubuntu下还是非常容易搭建的。
sudo apt-get install python-gtk python-webkit,即可。

链接

lunny58

2012年11月22日回答

添加评论
您还没有登录, 请登录后添加评论


0赞 踩
采纳

https://github.com/tmpvar/jsdom

链接

duhastmich1

2012年11月27日回答

添加评论
您还没有登录, 请登录后添加评论


0赞 踩
采纳

http://docs.casperjs.org/en/latest/quickstart.html

链接

eureka_sn1

2013年12月01日回答

添加评论

如何用python抓取js生成的数据 - SegmentFault的相关教程结束。

《如何用python抓取js生成的数据 - SegmentFault.doc》

下载本文的Word格式文档,以方便收藏与打印。