Scrapy:如何两次解析相同的URL,检查结果是否相同,如果不重新启动,直到两个结果相同

2024-05-16 00:06:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我刚刚开始使用Python和Scrapy进行web-刮取

我正试图从一个网站的众多URL中获取数据。URL结构始终与页面中的数据相同。因此,蜘蛛非常容易制作,直到现在为止,刮擦蜘蛛似乎非常容易

然而,我注意到,即使我使用代理管理器,我从响应中得到的一些结果与我在web浏览器中手动访问URL时得到的结果不同。据我所知,这可能是某种“蜜罐”

我想了一个绕过这个问题的方法:

  • 获取相同的URL两次
  • 比较结果值
  • 如果它们相似,请验证它们
  • 如果没有,则重新启动请求,直到获得两个相同的值

不幸的是,我现在还没有找到一个技术性的答案。我的蜘蛛怎么能总是两次解析同一个URL?我是否应该使用两个爬行器并以其他方式比较结果

这里是我的蜘蛛的原始代码:

import scrapy


def clean_prices(price_str : str):
    if price_str:
        return price_str.replace('\u202f','').replace(',','.').replace(" ","").replace("\xa0","").replace('\n','').replace('€','')
    else:
        return price_str

class PricesSpider(scrapy.Spider):
    name = "prices"
    download_delay = 2.5

    start_urls = [...]

    
    def parse(self, response):
        apart_cat_range = prices_cat.css("div.prices-summary__apartment-prices ul.prices-summary__price-range")

        
        yield {
            'prices' : clean_prices(apart_cat_range.css("li:nth-child(3)::text").get()).split("à")[1] if apart_cat_range.css("li:nth-child(3)::text").get() is not None else None
        }

Tags: cleanweburlifdefrangepricecss