Scrapy 重定向到某些网址的主页
Scrapy redirects to homepage for some urls
我是 Scrapy 框架的新手,目前正在使用它从多个 'Health & Wellness' 网站提取文章。对于某些请求,scrapy 正在重定向到主页(在浏览器中未观察到此行为)。下面是一个例子:
命令:
刮擦 shell “http://www.bornfitness.com/blog/page/10/”
结果:
2015-06-19 21:32:15+0530 [scrapy] 调试:Web 服务侦听 127.0.0.1:6080
2015-06-19 21:32:15+0530 [默认] 信息:Spider 打开
2015-06-19 21:32:15+0530 [默认] 调试:将 (301) 从 http://www.bornfitness.com/blog/page/10/ 重定向到 http://www.bornfitness.com/> >
2015-06-19 21:32:16+0530 [default] DEBUG: Crawled (200) http://www.bornfitness.com/> (referer: None)
请注意 url(10) 中的页码是两位数。我没有看到 urls 与单页码(例如 8)的这个问题。
结果:
2015-06-19 21:43:15+0530 [默认] 信息:Spider 打开
2015-06-19 21:43:16+0530 [default] DEBUG: Crawled (200) http://www.bornfitness.com/blog/page/8/> (referer: None)
当您在使用 scrapy 复制浏览器行为时遇到困难时,您通常想看看当您的浏览器与网站对话时与您的蜘蛛与网站对话时相比,那些交流的内容有哪些不同。请记住,网站(几乎总是)不是为了对网络爬虫友好而设计的,而是为了与网络浏览器交互。
对于您的情况,如果您查看随 scrapy 请求一起发送的 headers,您应该会看到如下内容:
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)'}
如果您检查网络浏览器对同一页面的请求所发送的 headers,您可能会看到如下内容:
**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
。这应该可以让您绕过重定向。
我是 Scrapy 框架的新手,目前正在使用它从多个 'Health & Wellness' 网站提取文章。对于某些请求,scrapy 正在重定向到主页(在浏览器中未观察到此行为)。下面是一个例子:
命令: 刮擦 shell “http://www.bornfitness.com/blog/page/10/” 结果: 2015-06-19 21:32:15+0530 [scrapy] 调试:Web 服务侦听 127.0.0.1:6080 2015-06-19 21:32:15+0530 [默认] 信息:Spider 打开 2015-06-19 21:32:15+0530 [默认] 调试:将 (301) 从 http://www.bornfitness.com/blog/page/10/ 重定向到 http://www.bornfitness.com/> > 2015-06-19 21:32:16+0530 [default] DEBUG: Crawled (200) http://www.bornfitness.com/> (referer: None)
请注意 url(10) 中的页码是两位数。我没有看到 urls 与单页码(例如 8)的这个问题。 结果: 2015-06-19 21:43:15+0530 [默认] 信息:Spider 打开 2015-06-19 21:43:16+0530 [default] DEBUG: Crawled (200) http://www.bornfitness.com/blog/page/8/> (referer: None)
当您在使用 scrapy 复制浏览器行为时遇到困难时,您通常想看看当您的浏览器与网站对话时与您的蜘蛛与网站对话时相比,那些交流的内容有哪些不同。请记住,网站(几乎总是)不是为了对网络爬虫友好而设计的,而是为了与网络浏览器交互。
对于您的情况,如果您查看随 scrapy 请求一起发送的 headers,您应该会看到如下内容:
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)'}
如果您检查网络浏览器对同一页面的请求所发送的 headers,您可能会看到如下内容:
**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
。这应该可以让您绕过重定向。