Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 2.7 web scraper出现HTTP错误503:服务不可用_Python 2.7_Web Scraping - Fatal编程技术网

Python 2.7 web scraper出现HTTP错误503:服务不可用

Python 2.7 web scraper出现HTTP错误503:服务不可用,python-2.7,web-scraping,Python 2.7,Web Scraping,我试图建立一个刮板,但我不断得到503阻塞错误。我仍然可以手动访问该网站,因此我的IP地址没有被阻止。我一直在切换用户代理,但仍然无法让代码一直运行。有时我能达到15岁,有时我什么也得不到,但最终总是失败。我毫不怀疑我的代码中有错误。不过,我确实把它剃得很合适,所以请记住这一点。如何在不使用第三方的情况下修复此问题 import requests import urllib2 from urllib2 import urlopen import random from contextl

我试图建立一个刮板,但我不断得到503阻塞错误。我仍然可以手动访问该网站,因此我的IP地址没有被阻止。我一直在切换用户代理,但仍然无法让代码一直运行。有时我能达到15岁,有时我什么也得不到,但最终总是失败。我毫不怀疑我的代码中有错误。不过,我确实把它剃得很合适,所以请记住这一点。如何在不使用第三方的情况下修复此问题

import requests
import urllib2
from urllib2 import urlopen     
import random
from contextlib import closing
from bs4 import BeautifulSoup
import ssl
import parser
import time
from time import sleep

def Parser(urls):
    randomint = random.randint(0, 2)
    randomtime = random.randint(5, 30)

    url = "https://www.website.com"   
    user_agents = [
    "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)",
"Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0)",
"Opera/9.80 (Windows NT 6.1; U; cs) Presto/2.2.15 Version/10.00"   
    ]
    index = 0
    opener = urllib2.build_opener()
    req = opener.addheaders = [('User-agent', user_agents[randomint])]

def ReadUPC():
    UPCList = [
    'upc',
    'upc2',
    'upc3',
    'upc4',
    'etc.'
   ]          

    extracted_data = []
    for i in UPCList:
        urls = "https://www.website.com" + i
        randomtime = random.randint(5, 30)
        Soup = BeautifulSoup(urlopen(urls), "lxml")
        price = Soup.find("span", { "class": "a-size-base a-color-price s-price a-text-bold"})
        sleep(randomtime)

        randomt = random.randint(5, 15)
        print "ref url:", urls
        sleep(randomt)
        print "Our price:",price
        sleep(randomtime)

if __name__ == "__main__":
    ReadUPC()
    index = index + 1     

sleep(10)



    554 class HTTPDefaultErrorHandler(BaseHandler):
    555     def http_error_default(self, req, fp, code, msg, hdrs):
    556         raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
    557 
    558 class HTTPRedirectHandler(BaseHandler):

HTTPError: HTTP Error 503: Service Unavailable

像正常人一样使用浏览器。该网站似乎是为分析你的行为而设计的,认为你是一个讨厌鬼,想要阻止你;在最简单的情况下,动态更改链接URL的最小JavaScript就足以禁用“哑”刮取器


有一些优雅的方法可以解决这个难题,例如通过安装浏览器,但如果没有外部工具,这是不可能实现的。

您正在抓取哪个网站?大多数网站也使用cookies来识别用户。请在代码中启用Cookie

同时在浏览器中打开该链接以及Firebug,查看您的浏览器在发出请求时向服务器发送的
标题。然后试着伪造所有的标题

附言:


在我看来,从同一个IP发送随机用户代理字符串不会有任何区别,除非您正在轮换IP。

您的代码无法遵循,为什么要混合这么多库?我删掉了一些我尝试过的东西。我为这些额外的东西道歉。你为什么要使用pycurl、urllib2、requests和urllib?我在这方面没有得到太多帮助。我以前从未做过这样的事。我试过只用一个,但我所做的一切都不起作用。我承认我不知道自己在做什么。几周来我一直在努力解决这个问题,但都没有成功,所以我想找个人来帮助我。首先,我将把你的代码缩小到最低限度,以重现你的问题,然后也许我们可以解决一些问题。你真的在每个请求之间睡觉吗?