【Python】关于如何抓取ajax评论
21 Oct 2013最近需要抓取一些网站的评论来分析,但是大多数网站评论都是ajax来获取的,那么如何使用python来爬取呢?
方案:1.抓包,分析评论js来源
2.phantomjs
3.casperjs
4.py-spidermonkey
5.pyv8
6.ghost.py
7.selenium
大致这么几种方案,每种我都尝试了一下,有的安装太困难,就切换方案了。
如果把环境都配置好的话,我估计要选择ghost.py。
最后选的第一种,用chrome抓包js评论的来源网址,然后分析参数,最后拼接js的地址。
下面就讲讲怎么抓,挺白痴的教程。
1.打开地址:http://v.youku.com/v_show/id_XMjY5OTQ3OTMy.html
2.chrome审查元素,切换到network下,选中scrpts
3.点击第二页评论
4.这时候看见优酷的评论是通过调用一个url接口,最后生成json格式的数据
5.分析上边的url,把能删掉的字段去掉,比如last_modify可以删掉,最后形成如下格式的链接
http://comments.youku.com/comments/~ajax/vpcommentContent.html?__ap=%22videoid%22:%22′+视频ID+’%22,’+’%22page%22:’+页数+’
其中视频ID就是http://v.youku.com/v_show/id_XMjY5OTQ3OTMy.html里的XMjY5OTQ3OTMy
6.最后用正则表达式来匹配json数据
7.其中python来处理json里的编码,我没有找到很好的方式
于是自己写了一个函数来处理,有时会报错,不过比较少,try掉就可以了。
import urllib2 import simplejson as json def pyunescape(jsescapse): """ python解析经javascrpt的escapse()加密的字符串 """ try: unescaped = json.loads('"'+urllib2.unquote(jsescapse.replace('%u','\\u'))+'"') return unescaped except: return None
如果你有更好的方法,分享一下呀!~~
转载请注明:于哲的博客 » 【Python】关于如何抓取ajax评论