Web scraping Web抓取和抓取飞溅——不同代理的结果不同?

Web scraping Web抓取和抓取飞溅——不同代理的结果不同?,web-scraping,scrapy-splash,Web Scraping,Scrapy Splash,我有一个代理地址列表,可以从中随机选择,并输入到Scrapy spider中的SplashRequest。为了确认这是有效的,我决定尝试从中获取结果。由于代理是随机选择的,我注意到基于IP的三种不同反应: 502坏网关 200 OK,正文上写着“抱歉,whatismyip.com不可用,因为它被归类为security.nettools。” 200 OK,返回正确的代理地址 如果有人能向我解释一下第一和第二阶段的情况,我将不胜感激 编辑 我在Docker容器中有一个Splash实例,我正在创建一个

我有一个代理地址列表,可以从中随机选择,并输入到Scrapy spider中的
SplashRequest
。为了确认这是有效的,我决定尝试从中获取结果。由于代理是随机选择的,我注意到基于IP的三种不同反应:

  • 502坏网关
  • 200 OK,
    正文
    上写着“抱歉,whatismyip.com不可用,因为它被归类为security.nettools。”
  • 200 OK,返回正确的代理地址
  • 如果有人能向我解释一下第一和第二阶段的情况,我将不胜感激

    编辑

    我在Docker容器中有一个Splash实例,我正在创建一个
    splashrequeest
    (不是一个scrapy请求),并将随机选择的代理IP提供给它。对于某些IP,我能够确认它正在传递给请求(请参见第3项),因此这似乎验证了这种方法——随机代理IP正在传递给
    SplashRequest
    。然而,对于一些IP,我得到了一个
    502坏网关
    或者奇怪的
    200 Ok
    ,其中“What Is My IP”不返回IP


    对于给定的IP地址,结果是一致的,即如果地址X给出结果1,它总是给出结果1。

    我只使用过几次scrapy splash,但严重依赖scrapy。我猜您正在使用scrapinghub中的splash实例。我认为这是因为ip实际上被用来发出请求

    我举的一个例子是,试图在谷歌购物网站上搜刮。谷歌将ip追溯到其来源。因此,无论我的ip池位于美国。一些IP可以追溯到其他国家并返回该县的结果。 假设我们有下面的代码

    def start_request:
      yield scrapy.Request(url='https://www.googleshopping.com/shopping/ID','splash':{})
    

    这将触发scrapy来创建请求。即使请求是在您的设备上发出的,它也会将该请求发送到splash服务器。它可以生活在docker中,也可以生活在scraping hub上的splash实例中。该splash实例将拥有自己的ip地址,而该ip正是Google将看到的。现在,如果在该请求中包含一个代理,则该ip可以来自世界上任何地方,具体取决于托管它的人,这将使ip更加模糊。长话短说,请求可能不是来自您认为来自的ip。

    谢谢您的回答。我不确定我是否理解你的例子。你介意试着澄清一下吗?尽我所能编辑了我的答案。哈哈。技术解释不是我的强项。谢谢你的编辑!我在我的原始问题中加入了更多的信息,试图让问题更清楚。根据你的编辑,我认为我们大约90%在同一页上。将splash参数传递给scrapyRequest时,可以提供splash url并将其转换为splash请求。所有这些的简短回答是,这是你的代理人。获取一些付费的、可靠的美国代理。我接受了你的回答,但正是你上面的评论解决了这个问题——“获取一些付费的、可靠的美国代理”你在哪里找到这些代理?听起来你需要更好的。