刮擦沃尔玛与刮伤和获得一般错误500

2024-06-09 19:19:01 发布

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

我对Python和刮痧不太熟悉,我一直在刮沃尔玛有一些积极的结果。在

它已经工作了一个星期,甚至25小时前,但是昨晚我开始得到这个响应,它没有出现在scrapy错误这是什么是刮和返回通过txt文件。在

<!doctype html>
<html lang="en-US" itemscope itemtype="http://schema.org/WebPage">
<head>
    <title>Omnivore Walmart</title>

</head>
<body id="WalmartBodyId" class="WalmartMainBody SimpleMode">



<!-- SiteCatalyst code version: H.23.3
Copyright 1996-2009 Adobe, Inc. All Rights Reserved
More info available at http://www.omniture.com
-->


<script language="JavaScript" type="text/javascript">
var s_account="walmartcom";
</script>
<script language="JavaScript" type="text/javascript" src=" https://secure.walmartimages.com/webanalytics/wmStat/wmStat.jsp"></script>
<script language="JavaScript" type="text/javascript">

var omni = {
"adid" : s_omni.getQueryParam('adid'),
"fbref" : s_omni.getQueryParam('fb_ref'),
"sourceid" : s_omni.getQueryParam('sourceid'),
"povid" : s_omni.getQueryParam('povid'),
"findingMethod" : s_omni.getQueryParam('findingMethod'),
getCampaignId : function() {
if(this.adid) { return this.adid; }
else if (this.fbref) { return this.fbref.split('_')[1]; }
else if (this.sourceid){ return this.sourceid; }
else { return ''; }
}
};
s_omni.pageName="Akamai Error 500:https://www.walmart.com/ip/Pringles-Loaded-Baked-Potato-Potato-Crisps-5-5-oz-Canister/144650857";
s_omni.channel="Walmart.com";
s_omni.campaign=omni.getCampaignId();
s_omni.prop1="Akamai Error";
s_omni.prop2="Akamai Error 500";
s_omni.prop48="Akamai 500:Generic Error - AKAMAI REFERENCE ERROR NO:3.1be3ab42.1510509312.48a15f11"; 

var s_code=s_omni.t();if(s_code) document.write(s_code);
</script>

<br>
    <table>
        <tr>
            <td>Error Page</td>
        </tr>

    </table>

    <br>
        <table>
            <tr>
                <td>Could not connect to server</td>
            </tr>
        </table>

</body>
</html>

我做过研究,大多数人认为500意味着被封锁/禁止是很少见的,有没有可能我已经调整了一些东西,或者可以调整一些东西来再次产生结果?在

任何帮助都将不胜感激,我试过不同的产品WM.com网站同样的,我可以通过浏览器找到它,没有任何问题。在


Tags: comreturniftablescriptcodeerrorthis
1条回答
网友
1楼 · 发布于 2024-06-09 19:19:01

您的scraper可能已被禁止访问该站点,因为您要么被检测到正在刮取,要么以其他方式恶意(例如,每分钟发送太多请求¹,而不是跟随机器人.txt). 在

既然你说几个小时前它仍然有效,我想禁令是基于知识产权的。现在可以执行以下操作:

  • 所有来自scrapy的请求都被禁止了吗?或者当你启动你的scraper时,是否可以执行一些请求,然后在几个请求之后它就停止工作了?在
  • 看看你能不能够到沃尔玛或者来自普通浏览器的https://www.walmart.com/ip/Pringles-Loaded-Baked-Potato-Potato-Crisps-5-5-oz-Canister/144650857,但是IP相同(如果它在服务器上,可以使用curl或{}或创建从本地PC到服务器的SSH隧道)
    • 如果这是有效的,禁令不仅仅是基于IP,所以你可以尝试改变scrapy的USER_AGENT,看看它是否能再次起作用
  • 从另一台电脑上尝试你同样的破烂设置(但只是很快),看看它是否有效(如果是,那么禁令至少包括IP)

接下来,你应该降低你的爬行率。我猜你爬得太过火了。在大多数情况下,只要降低爬行速度就足够了。然而,对于沃尔玛,我也可以相信他们有更先进的措施,比如从URL访问模式中检测机器人等等(我的意思是,如果你只请求每分钟一次,沃尔玛甚至可以检测到你)。在

规避禁令问题的一些想法:

  • 使用DOWNLOAD_DELAYAUTOTHROTTLE_*设置降低爬网速度
  • 使用IP旋转的爬网群集
    • scrapinghub提供这种服务,但它不是免费的,而且由于scrapinghub被很多人使用,他们的代理可能会有相同的问题
  • 不要使用scrapy的默认用户代理(但是我想你已经改变了,至少在你现在的情况下这不是问题)

脚注

¹是的,每分钟。在正常的网络爬网中,我们尽量让大多数网站延迟几秒钟。有些人在礼貌的爬行中使用公式factor * response-time-of-website,其中的因子略有不同,但始终是>;1。这意味着,根据这个公式,延迟时间通常也会大于1秒,我甚至听说过30左右的因素,这意味着延迟时间可能是15秒或更长。在

相关问题 更多 >