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「ServiceUnavailable」は、(何らかの理由で)サーバーがリクエストを処理できなかったことを意味します。通常、これは一時的なエラーです。ブロックされているかどうかを知りたいのですが、しばらくしてからもう一度試して、何が起こるかを確認してください。

また、ページの取得が速すぎることを意味している可能性もあります。修正は、同時リクエストを1に保つことによって(そしておそらく遅延を追加することによって)これを行わないことです。礼儀正しくしてください。

そして、あなた十分にこすり取っているならば、あなたは様々なエラーに遭遇するでしょう。クローラーがそれらを処理できることを確認してください。

于 2012-12-20T07:20:08.283 に答える
2

この答えは少し遅いかもしれませんが、私にとってうまくいったのはこれです。Mozilla/5.0ユーザーエージェントを指定したヘッダーを追加しました。その後、「HTTPステータスコード503」エラーの発生を停止しました。

コードは以下のとおりです。問題なくAmazonを実行しました。このコードは基本的に、Amazonのホームページからすべてのリンクを収集します。コードは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 に答える