【发布时间】:2023-03-14 10:04:01
【问题描述】:
我在 Windows Vista 64 位上使用 Python.org 版本 2.7 64 位。我一直在测试以下 Scrapy 代码,以递归地抓取网站 www.whoscored.com 上的所有页面,该网站用于足球统计:
from scrapy.contrib.spiders import CrawlSpider, Rule
from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor
from scrapy.selector import Selector
from scrapy.item import Item
from scrapy.spider import BaseSpider
from scrapy import log
from scrapy.cmdline import execute
from scrapy.utils.markup import remove_tags
class ExampleSpider(CrawlSpider):
name = "goal3"
allowed_domains = ["whoscored.com"]
start_urls = ["http://www.whoscored.com/"]
rules = [Rule(SgmlLinkExtractor(allow=()),
follow=True),
Rule(SgmlLinkExtractor(allow=()), callback='parse_item')
]
def parse_item(self,response):
self.log('A response from %s just arrived!' % response.url)
scripts = response.selector.xpath("normalize-space(//title)")
for scripts in scripts:
body = response.xpath('//p').extract()
body2 = "".join(body)
print remove_tags(body2).encode('utf-8')
execute(['scrapy','crawl','goal3'])
代码正在执行,没有任何错误,但是在抓取的 4623 个页面中,217 个页面的 HTTP 响应代码为 200,2 个页面的代码为 302,4404 个页面的响应代码为 403。任何人都可以在代码中立即看到任何明显的东西,说明为什么会这样吗?这可能是该网站的反刮擦措施吗?通常的做法是减慢提交的数量以阻止这种情况发生吗?
谢谢
【问题讨论】: