2015-06-19 25 views
0

我是Scrapy框架&的新用户,目前正在使用它从多个“Health & Wellness”网站中提取文章。对于某些请求,scrapy会重定向到主页(在浏览器中不会出现此行为)。下面是一个例子:Scrapy重定向到某个网址的主页

命令: scrapy壳 “http://www.bornfitness.com/blog/page/10/” 结果: 2015年6月19日21:32:15 + 0530 [scrapy] DEBUG:Web服务侦听127.0.0.1:6080 2015 - 06-19 21:32:15 + 0530 [默认]信息:蜘蛛打开 2015-06-19 21:32:15 + 0530 [默认]调试:重定向(301)到http://www.bornfitness.com/ > from http://www.bornfitness.com/blog/page/10/> 2015-06-19 21:32:16 + 0530 [default] DEBUG:Crawled(200)http://www.bornfitness.com />(referer:None)

请注意url(10)中的页码是一个两位数的数字。我没有看到这个问题与单页面页码(例如8)的网址。 结果: 2015-06-19 21:43:15 + 0530 [默认] INFO:蜘蛛打开 2015-06-19 21:43:16 + 0530 [default] DEBUG:Crawled(200)http:// www (引用者:无)

+0

您是否获得了200次成功加载页面的200次_before_?即 - 第8页是否将您重定向到第8页? – tegancp

回答

0

当您在使用scrapy复制浏览器行为时遇到困难时,通常需要查看当浏览器处于不同状态时传递的内容是什么与网站谈话的时候相比,当你的蜘蛛在与网站交谈时。请记住,一个网站(几乎总是)不是为了对网络爬虫很好,而是为了与网络浏览器交互。

对于你的情况,如果你看一下被你scrapy请求一起发送,你应该看到类似:

In [1]: request.headers 
Out[1]: 
{'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 
'Accept-Encoding': 'gzip,deflate', 
'Accept-Language': 'en', 
'User-Agent': 'Scrapy/0.24.6 (+http://scrapy.org)'} 

如果检查由请求对同一发送通过Web浏览器页面,你可能会看到这样的:

**Request Headers** 

GET /blog/page/10/ HTTP/1.1  
Host: www.bornfitness.com  
Connection: keep-alive  
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 
User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.124 Safari/537.36 
DNT: 1  
Referer: http://www.bornfitness.com/blog/page/11/ 
Accept-Encoding: gzip, deflate, sdch  
Accept-Language: en-US,en;q=0.8 
Cookie: fealty_segment_registeronce=1; ... ... ... 

尝试改变User-Agent在您的要求。这应该允许你避开重定向。

+0

谢谢,将USER_AGENT从默认的'Scrapy/0.24.6(+ http://scrapy.org)'更改为'born_fitness'(或任何其他)可以解决问题。任何想法为什么这只发生在一些网址(/ page/10 /但不是/ page/8 /),为什么只为USER_AGENT'Scrapy/0.24.6(+ http://scrapy.org)'? – Aditya