使用Python抓取Ajax内容
我正在用Python抓取一个YouTube页面,这个页面里面有很多Ajax内容。
每次我都得调用JavaScript才能获取信息。但是我不太确定该怎么做。我正在使用urllib2模块来打开网址。任何帮助都会很感激。
5 个回答
2
这是我会怎么做的:首先在Firefox浏览器上安装Firebug,然后在Firebug中打开网络(NET)功能,接着点击YouTube上你想要的链接。现在看看发生了什么,以及请求了哪些页面。找到负责页面中AJAX部分的那个链接。现在你可以用urllib或者Mechanize来获取这个链接。如果你能通过这种方式获取到相同的内容,那就说明你找到了你想要的东西,然后只需要解析一下内容。如果你无法通过这种方式获取内容,那可能是因为请求的页面在检查用户的登录信息、会话信息或者其他一些头部字段,比如HTTP_REFERER等等。这时候你可能需要考虑使用一些更复杂的工具,比如scrapy等等。我建议你总是先走简单的路线。祝你好运,开心地“负责任地”抓取数据!:)
6
主要问题是,你违反了YouTube的服务条款。YouTube的工程师和律师会尽全力追踪你,如果你继续这样做,他们会给你一个教训。如果你愿意冒这个险,那就随你便——从技术上讲,你可以试试python-spidermonkey和selenium。我想把这些技术建议记录下来,以防将来有其他人有类似的问题,但如果你继续这样做,法律问题是你必须面对的。
6
Youtube(还有谷歌做的其他东西)已经有非常丰富的接口,可以让你访问几乎所有你想要的数据。
想了解更多信息,可以看看 Youtube 数据接口。
我用urllib来发送接口请求,用ElementTree来解析返回的XML数据。