网页抓取阻止访问脚本的网页

时间:2014-11-04 21:41:17

标签: python web-scraping

我曾经使用python脚本(urllib)抓取一个网站。 看来网站现在阻止了我的请求,每当我使用脚本请求网页时,我会得到一个带有一些JS的html,但没有通常的数据。从我的浏览器访问网站工作正常。我尝试更改“用户代理”以适合我的浏览器使用的那个,但它没有帮助。我观察到的一个奇怪的行为是,从浏览器访问页面后,我也可以从脚本中访问它。

所以我的问题是:

  1. 服务器如何检测到它不是浏览器(在我更改用户代理后)?
  2. 什么样的机制只能在浏览器加载网页后才会导致允许访问的奇怪行为?是缓存吗?如果是的话,缓存发生在哪里?
  3. 任何想法如何进行? (我有一个不太优雅的解决方案,在我加载它之前让我的浏览器打开每个页面,但它需要太多时间)
  4. 谢谢!

1 个答案:

答案 0 :(得分:1)

没有太多细节,听起来像网站更新,包括一个JavaScript加载器。 urllib无法处理javascript,因此无法继续操作。 (纯粹猜测在这里)

网站可以通过各种方式阻止抓取工具访问它,包括设置一些Javascript或更新cookie,或以某种方式修改会话以通过第一次测试。它完全取决于网站,因此您必须手动调查。

通常的解决方案是使用像Selenium这样的javascript识别抓取工具,它实际上使用本地安装的FirefoxChromeIE浏览器来打开页面,模拟点击项目。您还可以使用PhantomJS处理下载的页面。

关于此问题的帖子很多,但是可以给你一个起点:Web-scraping JavaScript page with Python