gpt4 book ai didi

python - time.sleep() 函数在 Scrapy 递归网络抓取器中不起作用

转载 作者:行者123 更新时间:2023-12-01 05:06:53 24 4
gpt4 key购买 nike

我在 Windows Vista 64 位上使用 Python.org 版本 2.7 64 位。我正在查看的网站上有一些递归网络抓取代码被反抓取措施捕获:

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
import time


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')
time.sleep(5)

execute(['scrapy','crawl','goal3'])

为了阻止这种情况发生,我尝试添加一个基本的“time.sleep()”函数来减慢提交的速度。但是,当通过命令提示符运行代码时,此功能似乎没有任何效果。代码继续以相同的速度运行,因此所有请求都以 HTTP 403 的形式返回。

有人能明白为什么这可能不起作用吗?

谢谢

最佳答案

不要重新发明轮子。 DOWNLOAD_DELAY设置就是您正在寻找的内容:

The amount of time (in secs) that the downloader should wait before downloading consecutive pages from the same website. This can be used to throttle the crawling speed to avoid hitting servers too hard.

还有其他技术,例如轮换用户代理、IP 地址,请参阅 Avoid Getting Banned 了解更多信息部分。

此外,请确保您了解该网站的使用条款。确保他们没有声明禁止网络爬行以及网站是否提供 API。

关于python - time.sleep() 函数在 Scrapy 递归网络抓取器中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24831322/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com