python - 如何为爬虫构建代理池
巴扎黑
巴扎黑 2017-04-18 09:06:55
0
3
793

为了避免爬虫被封 IP ,网上搜索教程说需要建立代理池。但是付费代理都好贵。。。不过好在网上已经有不少免费提供代理的网站了。因此,我打算写个爬虫去获取这些免费 IP ~

策略步骤

  1. 用种子关键词例如“代理 IP ”在各个搜索引擎上搜索,获取候选 URL

  2. 爬取候选 URL ,将代理地址储存下来

  3. 验证代理地址,将可用的代理地址放入代理池

难点

  1. 如何去验证维护这些代理地址

  2. 如何知道哪些代理地址适合哪些网站(可用性,响应时间)

  3. 效率问题(之前写过简单的验证脚本,但是效率非常低)

小伙伴们有不有什么好的办法能解决这些问题呢?

巴扎黑
巴扎黑

全員に返信(3)
刘奇

私も同じ仕事をしたことがあり、その時も自動検索と自動更新を行うための独自のクローラを書きました。

プロキシ アドレスに関しては、クローラーに Web サイトを自動的に選択させず、無料のプロキシを提供するいくつかの Web サイトを手動で選別し、さまざまなプロキシ Web サイトをクロールするいくつかのクローラーを作成しました。

あなたが言及した問題への回答:

  1. 検証のために、初めてクロールされたアドレスが使用可能かどうかが直接検証され、エージェントの信頼性が低いため、データベースに保存されるか、永続化されます。キャプチャされたエージェントが利用可能かどうかを定期的に確認する必要があります。uWSGI サーバー上でスケジュールされたタスクが開始され、30 分ごとにチェックされ、新しいエージェントが 1 時間ごとにキャプチャされます。 もちろん、スケジュールされたタスクを使用することもできます。 crontab など。

  2. アクセスする必要がある Web サイトにアクセスするには、キャプチャされたプロキシを直接使用します。Web サイトごとに異なるプロキシを提供する必要がある場合は、関連する検証情報を一緒に検証して保存できます。

    ネットワーク検証操作はすべて I/O 集約型のタスクであり、Python の GIL はマルチスレッドに影響を与えずに解決できます。 I/O 集中型のタスクの効率を改善します
  3. multithreading-spider 以前、マルチスレッド + キューを使用して単純なプロキシ クローラーを作成しました。 src のデモは、単純なプロデューサー/コンシューマー モデルを使用します。確認 エージェント可用性クローラはコンシューマとして機能し、特定のタスクの進行状況を表示できます。
いいねを押す +0
洪涛

Python ベースのプロキシ プールを試してみてください。
インターネット上のプロキシ リソースを自動的に取得し、拡張を容易にします。
https://github.com/WiseDoge/P...

いいねを押す +0
左手右手慢动作

このプロジェクトをご覧ください: https://github.com/jhao104/pr...

オープンソースのプロキシ プール サービス

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート