web-dev-qa-db-ja.com

Scrapy Pythonユーザーエージェントのセットアップ

プロジェクトに余分な行を追加して、クロールスパイダーのユーザーエージェントをオーバーライドしようとしました 設定ファイル 。コードは次のとおりです。

[settings]
default = myproject.settings
USER_AGENT = "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.93 Safari/537.36"


[deploy]
#url = http://localhost:6800/
project = myproject

しかし、自分のウェブに対してクローラーを実行すると、クモがカスタマイズされたユーザーエージェントではなくデフォルトの「Scrapy/0.18.2(+ http://scrapy.org ) 「。誰が私が間違ったことを説明できますか?.

注意:

(1)。 ser agent globally をオーバーライドしようとしたときに機能します:

scrapy crawl myproject.com -o output.csv -t csv -s USER_AGENT="Mozilla...."

(2)。構成ファイルから「default = myproject.setting」という行を削除し、scrapy crawl myproject.comを実行すると、「スパイダーを見つけることができません。」と表示されるため、この場合はデフォルト設定を削除しないでください。

事前に助けてくれてありがとう。

27
B.Mr.W.

USER_AGENT行をsettings.pyファイルではなく、scrapy.cfgファイルに移動します。 settings.pyは、items.pyコマンドを使用する場合はscrapy startprojectと同じレベルにする必要があります。この場合、myproject/settings.pyのようなものにする必要があります

38
paul trmbrth

スクレイピークロールを手動で制御するユーザーがここに着いた場合に備えて。つまり、notシェルからスクレイピークロールプロセスを使用します...

_$ scrapy crawl myproject
_

ただし、CrawlerProcess()またはCrawlerRunner()...を使用するように設定してください。

_process = CrawlerProcess()
_

または

_process = CrawlerRunner()
_

ユーザーエージェントは、他の設定とともに、構成変数の辞書でクローラーに渡すことができます。

このような...

_    process = CrawlerProcess(
            {
                'USER_AGENT': 'Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)'
            }
    )
_
2
Bletch