[英]Scraping websites with Javascript enabled?
我正在尝试抓取信息并将其提交给严重依赖 Javascript 执行大部分操作的网站。 当我在浏览器中禁用 Javascript 时,该网站甚至无法运行。
我在 Google 和 SO 上搜索了一些解决方案,有人建议我应该对 Javascript 进行逆向工程,但我不知道该怎么做。
到目前为止,我一直在使用 Mechanize,它可以在不需要 Javascript 的网站上运行。
有没有办法通过使用 urllib2 或类似的东西来访问使用 Javascript 的网站? 如果需要的话,我也愿意学习 Javascript。
我写了一个关于这个主题的小教程,这可能会有所帮助:
http://koaning.io.s3-website.eu-west-2.amazonaws.com/dynamic-scraping-with-python.html
基本上你所做的是让 selenium 库假装它是一个 Firefox 浏览器,浏览器将等到所有 javascript 都加载完毕,然后再继续向你传递 html 字符串。 一旦你有了这个字符串,你就可以用beautifulsoup解析它。
您应该考虑使用Ghost ,这是一个包含 PyQt4 + WebKit hack 的 Python 库。
这使得g
成为 WebKit 客户端:
import ghost
g = ghost.Ghost()
您可以使用g.open(url)
抓取页面,然后g.content
将评估当前状态下的文档。
Ghost 还有其他很酷的特性,比如注入 JS 和一些表单填充方法,你可以将生成的文档传递给 BeautifulSoup 等等: soup = bs4.BeautifulSoup(g.content)
。
到目前为止,Ghost 是我发现的唯一使 Python 中的这种事情变得容易的东西。 我遇到的唯一限制是您不能轻松地创建多个客户端对象的实例ghost.Ghost
,但您可以解决这个问题。
我遇到了完全相同的问题。 这一点都不简单,但我终于找到了一个很好的解决方案,使用PyQt4.QtWebKit
。
你会在这个网页上找到解释: http : //blog.motane.lu/2009/07/07/downloading-a-pages-content-with-python-and-webkit/
我已经测试过了,我目前正在使用它,这很棒!
它的一大优点是可以在服务器上运行,只使用X,没有图形环境。
检查撬棍。 我没有任何经验,但我对你的问题的答案很好奇,所以我开始在谷歌上搜索。 我想知道这是否适合你。
http://grep.codeconsult.ch/2007/02/24/crowbar-scrape-javascript-generated-pages-via-gecko-and-rest/
也许您可以使用Selenium Webdriver ,我相信它具有 python 绑定。 我认为它主要用作测试网站的工具,但我想它也应该可用于抓取。
我实际上建议使用硒。 它主要是为了从“用户角度”测试 Web 应用程序而设计的,但它基本上是一个“FireFox”驱动程序。我实际上已经将它用于此目的......尽管我正在抓取动态 AJAX 网页。只要 Javascript 表单有一个可识别的“锚文本”,Selenium 可以“单击”所有应该自己整理的内容。
希望有帮助
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.