微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

辅助 SplashRequest 始终呈现 Cloudflare 响应

如何解决辅助 SplashRequest 始终呈现 Cloudflare 响应

我正在抓取一个允许使用机器人的网站,该网站使用的是 cloudflare,但我不相信它对此并不严格。我遇到的问题是我正在根据类别抓取一些链接,在收集这些链接后,我想发送一个新的 SplashRequest 来呈现新的 html 链接

无论我做什么/尝试额外的 SplashRequest 都会导致 cloudflare 检测页面,即使我将刮板更改为仅抓取 1 个链接并尝试这样做。是否所有相同的标头都会在后续请求中传递?我这里的音量很小,我不认为这是 cloudflare 由于我的行为而识别刮板,除非它与标题/用户代理有关?所有这些查询在本地主机启动时都完全正常。

我不是在这里寻找解决方案,只是想了解可能导致这种行为的原因?

import scrapy
from urllib.parse import urljoin
from scrapy_splash import SplashRequest


class ExampleSpider(scrapy.Spider):
    name = "example"
    start_urls = ['https://www.example.com']

    def start_requests(self):
        for url in self.start_urls:
            yield SplashRequest(url,self.parse,args={'wait': 0.5})

    def parse(self,response):
        example_dict = {}
        for item in response.css("ul._3o1ZveERyh3pMDbbdZeBHE").css("li").css('a::attr(href)').getall():
            example_dict['link'] = urljoin('https://example.com/',item)
        yield example_dict
        yield SplashRequest(example_dict['link'],self.parse_people_links,args={'wait': 0.5})

    def parse_people_links(self,response):
        from scrapy.shell import inspect_response
        inspect_response(response,self)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。