検索

ホームページ  >  に質問  >  本文

python - 如何为爬虫构建代理池

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

策略步骤

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

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

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

难点

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

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

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

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

巴扎黑巴扎黑2836日前804

全員に返信(3)返信します

  • 怪我咯

    怪我咯2017-04-18 09:08:55

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

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

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

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

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

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

    PHP中文网2017-04-18 09:08:55

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

    返事
    0
  • ringa_lee

    ringa_lee2017-04-18 09:08:55

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

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

    返事
    0
  • キャンセル返事