为什么我不能使用Scrapy从此URL抓取(使用"#"在其中)?

时间:2016-11-28 19:31:27

标签: url scrapy

我是Scrapy的新手,现在我正在开展一个项目,我需要在这个网站上使用Scrapy爬行:https://www.google.com/partners/#a_search;bdgt=10000;lang=en;locn=United%20States;motv=0;wbst=http%253A%252F%252F
我无法将整个URL传递给Scrapy中的响应,所以我使用PYCHARM来调试它,我发现我只能在之前传递URL,有人可以帮我解决这个问题?非常感谢!!!!

1 个答案:

答案 0 :(得分:3)

Url片段(#之后的部分)不会发送到远程Web服务器;这就是HTTP的工作原理。片段在发送请求后由浏览器处理;在Google的情况下,它会触发一些JavaScript函数等。

Scrapy不是浏览器 - 它不会评估JavaScript; Scrapy只是通过HTTP下载数据。这就是当Scrapy抓取页面时片段从URL中删除的原因 - 无法使用它。

如果您想处理此类网址片段,您有两种选择:

  1. 模拟浏览器正在做什么 - 检查传递此URL时所做的HTTP请求并在Scrapy中模拟它们;
  2. 使用浏览器引擎呈现页面,例如Selenium,PhantomJS或Splash。有一个scrapy + splash集成插件:https://github.com/scrapy-plugins/scrapy-splash