【クローラー開発】実際のプロジェクト実戦を踏まえ、開発から展開までの体験まとめ

開発プロセス

1. IDE による開発

Chrome プラグイン

科学的にオンラインにアクセスし、プラグイン ストアに移動して、Selenium IDE インストールを検索します。

Firefox アドオン

インターネットにアクセスできない場合は、firefox プラグインを使用し、selenium IDE を検索してインストールします。

開発する

インストール後、プラグインを開き、自分のブラウザ操作を記録します。記録プロセス中に、いくつかの無意味な操作を削除して、エクスポート スクリプトをより簡潔にすることができます。
前の手順の記録が完了したら、記録スクリプトをエクスポートし、言語として python を選択して、完全な python スクリプト コードを取得します。
Selenium IDE によってエクスポートされた python は直接使用でき、pytest の依存関係を削除するなど、さらに合理化できます。
後で、複数のクローラーが同時に実行されている場合、実行時に chrome が大量のメモリを消費することがわかります。そのため、セレンとブラウザーを捨てて、ターゲットの Web サイト API に直接アクセスすることを検討してください。

2.郵便配達員が開発

Postman 開発は、API 開発の本質です。後ほど追加予定

3.スクレイピーな開発

追加予定

4.プロキシを追加

代理購入サイト

大量のトラフィックで対象の Web サイトにアクセスすると、IP 禁止が発生します. 一時的な解決策は、アクセスする前に数分間待つことです. 恒久的な解決策は、プロキシ IP を使用することです。
SmartProxy は
高価ですが、非常に使いやすいです

導入プロセス

導入環境はCentOS

1.塔の展開

pagoda 環境での python の使用

centOS には python 2.7 が付属していますが、当社の開発は python3 に基づいています。centOS がパゴダをインストールした後、次のコマンドを使用して
btpython -V
btpython が python 3.8 であることを確認します。したがって、pyenv などの python バージョン マネージャーをインストールする必要はありません。

centOS に Chrome をインストールする

  1. yum ソースを変更する
    /etc/yum.repos.d/ ディレクトリに新しいファイル google-chrome.repo を作成し、次の内容を追加します
[google-chrome]
name=google-chrome
baseurl=http://dl.google.com/linux/chrome/rpm/stable/$basearch
enabled=1
gpgcheck=1
gpgkey=https://dl-ssl.google.com/linux/linux_signing_key.pub
  1. yum によってインストールされたGoogle の公式ソース
    yum -y install google-chrome-stable
    は、中国では利用できない可能性があり、その結果、インストールが失敗したり、中国での更新に失敗したりします。次のパラメーターを追加してインストールできます。 
    yum -y install google-chrome-stable --nogpgcheck
  2. Chrome のバージョンを確認し、対応する chromedriver をインストールします
    google-chrome -v

centOS に Firefox ブラウザをインストールする

yum を使用して直接インストール可能
yum install firefox

Web ドライバーをインストールする

  1. ChromeDriver
    淘宝網の
    公式リンク
  2. GeckoDriver は Firefox ブラウザーに適しています
    Github リンク
    Geckodriver と Firefox バージョンの対応表
  3. SafariDriver (Mac 開発に適しています)
    Safari には独自の webriver があり、個別にインストールする必要はありませんが、有効にする必要があります。メニュー/開発/リモート デバッグを許可します。menu/develop/リモート オートメーションを許可する
    すべての webriver は /usr/local/bin フォルダーに配置されます

ヘッドレス ブラウザをセットアップする

開発中はヘッドレス ブラウザを使用しませんが、サーバーにデプロイした後はヘッドレス モードを使用することをお勧めします。ヘッドレス モードのサンプル コードは次のとおりです。

from selenium import webdriver

options = webdriver.ChromeOptions()   
# options = webdriver.FirefoxOptions()  
options.add_argument("--headless")   
options.add_argument("--no-sandbox")   
driver = webdriver.Chrome(options=options)   
driver.get("https://www.qq.com")   
driver.get_screenshot_as_file("test.png")   
driver.quit()

2.監督者の監視

スーパーバイザー監視が使用される理由は、クローラーは常にさまざまな理由でプロセスを予期せず終了させるためです. スーパーバイザーを使用すると、プロセスが終了したときに自動的に再起動できます.

スーパーバイザーのインストール

  1. パゴダの下にスーパーバイザーをインストール
    パゴダのスーパーバイザー プラグインを使用することをお勧めします。愚かなインストール
  2. パゴダ以外の場所にスーパーバイザーを設置
    pip install supervisor
  3. macOS でのスーパーバイザーのインストール
    brew install supervisor
    Mac にスーパーバイザーをインストールした後、ブラウザーを起動して、
    http://localhost:9001
    スーパーバイザー プロジェクトを視覚的に管理するための入力を行うことができます。

スーパーバイザーのコマンドライン起動

パゴダの視覚化はスーパーバイザーを使用すると非常に便利ですが、監視プロセスが 2 桁を超えると、各プロセスを 1 つずつ手動で開始するのは時間がかかります。そのため、コマンドラインを使用して開始および一時停止することをお勧めします。
スーパーバイザーのコマンドラインコマンドは次のとおりです

supervisorctl reload
supervisorctl stop all

pagoda の下のスーパーバイザーのインストール パスは /www/server/panel/pyenv/bin/supervisorctl である
ため、上記のコマンドを次のように変更する必要があります。

# 查看版本
/www/server/panel/pyenv/bin/supervisord -v  
# 重新启动
/www/server/panel/pyenv/bin/supervisorctl reload
# 停止所有进程
/www/server/panel/pyenv/bin/supervisorctl stop all

スーパーバイザ イベント リスナー モニタリング アラーム

プログラムが展開された後、プログラムが異常終了した回数、クローラーが起動に失敗したかどうかなど、プログラムがどのように実行されているかを常に知りたいと考えています。スーパーバイザ イベント リスナを使用すると、モニタリングとアラームで役割を果たすことができます。
スーパーバイザーのイベント リスナーは、スーパーバイザーの子プロセスでもあります。したがって、最初に listener.py 監視スクリプトを作成してから、スーパーバイザーにスクリプトを実行させる必要があります。
listener.py の書き方は、あとで記事を書くことに専念します。
書き込み後、スーパーバイザーのメイン構成ファイルを見つけて、次の内容を追加します

[eventlistener:listener]
command=btpython listener.py   
process_name=%(program_name)s 
numprocs=1                    
events=PROCESS_STATE                  
directory=/www/wwwroot/project 
autostart=true               
autorestart=unexpected  
user=root      

パゴダ環境でスーパーバイザーを使用する

  1. python プロジェクト マネージャーをインストールし、python3.7.8 バージョンをインストールし、デフォルト バージョン
    pyenv global 3.7.8に設定します。

よくある問題

  1. パゴダ下のスーパーバイザーが正常に起動できない?
    /www/server/panel/plugin/supervisor/log に移動して、エラー ログを表示します。
  2. 明らかに pytest がインストールされていますが、名前付きモジュール pytest が表示されません?
    これは、サーバーに複数の python バージョンがあり、pytest のインストール ディレクトリがデフォルト バージョンにないためです. 解決策は次のとおりです: which pytest を使用して
    、 pytest コマンド、次に /root/ .pyenv/shims/python3 -m pytest
  3. リモート サーバーがシステムを再インストールした後に sshkey が変更された場合はどうすればよいですか?
    ssh-keygen -R "ip" をローカルで実行します。ここで、IP アドレスはリモート サーバー アドレスに置き換えられます。
  4. Linux はプロセスをどのように表示しますか
    https://www.linuxprobe.com/linux-look-process.html

カスタムパゴダ

パゴダをカスタマイズする理由は、開発期間中の多くの反復的なデバッグとインストール作業が頭痛の種であるため、パゴダのソース コードを分析し、独自のニーズに応じてカスタム変更を加えました。多くの学生はこのステップを必要としないはずなので、チュートリアルは書きません。必要に応じて、私に個別に連絡することができます。

おすすめ

転載: blog.csdn.net/weixin_42553583/article/details/124474555