2016-11-16 8 views
0

私は630,220個のURLを開いて擦っておく必要があります。これらのURL自体は削り取られており、削られたページごとに3,500個のURLが返されるため、これらのURLを削ることはずっと簡単です。多くのURLをPythonで掻き集める

これらの630,220のURLをスクラップするには、現在スレッドを使用してPythonで並列スクレイピングを行っています。 16個のスレッドを使用すると、200個のURLをスクラップするのに51秒かかります。したがって、この問題を処理するために不必要に時間が掛かり、非効率的な方法であるように見える630,220のURLをすべて掻き集めるのに44時間かかります。

サーバが過負荷にならないと仮定すると、1秒あたり1000リクエストのようなものを非同期的に送信する方法はありますか?そうすれば、掻き集める時間は約10分に短縮され、これはかなり合理的です。

+0

[asyncio](https://docs.python.org/3/library/asyncio.html)に興味があるかもしれません。 –

+1

[Scrapy](https://scrapy.org/)は既に非同期で、近い将来にハンドリングできるほど強力で、プロダクションの準備ができています。単一の[ベンチマーク](https://doc.scrapy.org/en/latest/topics/benchmarking.html)があなたにいくつかの洞察を提供するかもしれません。 –

答えて

0

geventを使用してください。 Python標準ライブラリのサルのパッチ適用を有効にして、お気に入りのスクラップライブラリを使用してください。同じことをしている1000のグリーンレットでスレッドを置き換えてください。そして、あなたは完了です。

関連する問題