4

我正在尝试用scrapy抓取一个论坛网站。如果我有,爬虫工作正常

CONCURRENT_REQUESTS = 1

但是,如果我增加该数字,那么我会收到此错误

2012-12-21 05:04:36+0800 [工作] 调试:重试 http://www.example.com/profile.php?id=1580>(失败 1 次):503 服务不可用

我想知道论坛是否阻止了请求或存在一些设置问题。

4

2 回答 2

7

HTTP 状态码 503,“服务不可用”,表示(出于某种原因)服务器无法处理您的请求。这通常是一个暂时的错误。我你想知道你是否被屏蔽了,过一会儿再试,看看会发生什么。

这也可能意味着您获取页面的速度太快了。解决方法不是通过将并发请求保持在 1(并可能增加延迟)来做到这一点。要有礼貌。

如果你刮得够多,你会遇到各种错误。只要确保你的爬虫可以处理它们。

于 2012-12-20T07:20:08.283 回答
2

这个答案可能有点晚了,但对我有用的是这个。我在指定 Mozilla/5.0 用户代理的地方添加了一个标题。然后我停止收到“HTTP 状态代码 503”错误。

代码如下,刚刚通过亚马逊运行没有问题。这段代码基本上收集了亚马逊主页的所有链接。代码是一种 Python 编程语言代码。

    import urllib2
    from bs4 import BeautifulSoup, SoupStrainer

    url = "http://www.amazon.com"
    opener = urllib2.build_opener()
    opener.addheaders = [('User-Agent', 'Mozilla/5.0')]
    website = opener.open(url)

    html = website.read()
    soup = BeautifulSoup(html, "html.parser")

    for element in soup.find_all(['a','link']):
        link = element.get('href')
        print link
于 2017-01-01T22:08:47.403 回答