繁体   English   中英

在启用 Javascript 的情况下抓取网站?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM