为了账号安全,请及时绑定邮箱和手机立即绑定

即使在 scrapy 中使用代理旋转也无法摆脱有问题的页面

即使在 scrapy 中使用代理旋转也无法摆脱有问题的页面

小唯快跑啊 2023-10-18 21:33:01
我使用 scrapy 创建了一个脚本,在其中实现代理轮换,以解析address数百个类似的链接,如下所示。我已经从脚本中的 csv 文件提供了这些链接。该脚本运行良好,直到遇到任何像这样的响应 url https://www.bcassessment.ca//Property/UsageValidation。鉴于一旦脚本开始获取该链接,它就无法绕过该链接。仅供参考,我使用包含的元属性来lead_link使用原始链接而不是重定向链接作为重试,因此我应该能够绕过该障碍。当我在请求库中使用代理时,不会发生这种情况。更清楚地说 - 在使用请求库时,脚本确实遇到此页面/Property/UsageValidation,但在几次重试后成功绕过该页面。蜘蛛就像:class mySpider(scrapy.Spider):    name = "myspider"    custom_settings = {        'DOWNLOADER_MIDDLEWARES': {            'stackoverflow_spider.middlewares.ProxiesMiddleware': 100,        }    }    def start_requests(self):        with open("output_main.csv","r") as f:            reader = csv.DictReader(f)            for item in list(reader):                lead_link = item['link']                yield scrapy.Request(lead_link,self.parse,meta={"lead_link":lead_link,"download_timeout":20}, dont_filter=True)    def parse(self,response):        address = response.css("h1#mainaddresstitle::text").get()        print(response.meta['proxy'],address)if __name__ == "__main__":    c = CrawlerProcess({        'USER_AGENT':'Mozilla/5.0',        'LOG_LEVEL':'ERROR',    })    c.crawl(mySpider)    c.start()如何让脚本不遇到该页面?PS:我在文本文件中附加了一些链接,以防有人想尝试。
查看完整描述

1 回答

?
忽然笑

TA贡献1806条经验 获得超5个赞

要为 scrapy 应用程序实现会话安全代理实现,您需要添加额外的cookiejar元键来放置代理分配的位置,request.meta如下所示:

....
yield scrapy.Request(url=link, meta = {"proxy":address, "cookiejar":address})

在这种情况下,scrapycookiesMiddleware将为每个代理创建额外的 cookieSession。


查看完整回答
反对 回复 2023-10-18
  • 1 回答
  • 0 关注
  • 93 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信