12_爬虫類の段階的総括

2773 ワード

簡単に述べる
このセクションでは、従来のPython爬虫類の例で発生した問題について説明します.
共通プラグインの説明
#      Python     3.5
import requests                         #      
from bs4 import BeautifulSoup           #      
import re                               #     
import time, os                         #  、      
import datetime                         #    
import pymssql                          #MS SQL Server    
import pymongo                          #MongoDB   
import json                             #Json  
import crypto                           #    
import execjs                           #  JavaScript

構想分析
1、目標分析目標がどのようなデータを提供できるか、自分がどのようなデータを必要とするかを明確にし、Excelを用いて目標データ構造2を構築し、データロード方式分析目標データがどのような形式でロードされるかを明らかにし、キャプチャ後の解析方式JsonまたはBeautifulSoup、再帰ページをめくる必要があるかどうかなどの3、コード実現requestモジュールを通じて、データのキャプチャを実現する.期間はcookiesheaders、鍵シミュレーションなどの問題に関連する可能性があり、絶えず改善すればよい.適切なモジュール解析データを選択します.入庫ストレージの実装
問題のまとめ
質問1、crypto使用、配置、プロンプトJson未定義、識別子、文字列または数値が見つかりません
以上の問題は、呼び出されたJavaScriptに実行環境互換性のない構文がある可能性があります.まず、実行環境バージョンを表示し、以前のバージョンと比較するとnode.jsを直接インストールすることをお勧めします.
#          
>>> execjs.get().name
'Node.js (V8)'

問題2、requests要求後の戻りタイプが異なる
異なるデータを返すために、適切な解析方法を選択する必要があります.
#  
r = requests.get(url)
r.content               #  
r.text                  #   
r.json()                #Json  
#  
r.status_code           #     
r.headers               #   
r.cookies.get_dict()    #cookies  

問題三、返却データ解析異常
すべてのコンテンツフォーマットが完全に一致していると判断できないため、解析異常、例えばtypelen、三元比較子を様々な方法でキャプチャする必要がある.
# type
        if type(dist_aqi) == dict: #        
            print(dist_aqi["error"])
        else:
            parse_html_aqi(dist_aqi)
#      
aqi = city_air_quality["aqi"]  if 'aqi' in city_air_quality else ''

問題四、データ量が多いため、重複したデータが消費されたかどうかを検査する
実際のキャプチャでは、重複操作の応答時間がデータ量の増加に伴って増加するかどうかを確認し、テーブルの設計時に適切なインデックスを確立することを推奨します.
問題5、プログラムのその他の原因が崩壊する
実際のキャプチャ中にプログラムが多数の原因でクラッシュする可能性があり、異常を記録し続け、異常処理を追加することを提案し、処理が終わった後、しばらく休んで、自動的に適切なプログラムセグメントを呼び出して引き続きキャプチャする.
その他
キャプチャには、シミュレーションcookiesheaderstimeoutなどが含まれており、本質的に最も理想的なキャプチャプログラムは、真実の要求をシミュレートするために尽力することであり、これに対して、データ提供者/発行者としても対応する逆登り措置がある.世界平和のために、キャプチャ側として、できるだけ正規APIでデータを取得し、キャプチャをシミュレートしなければならない場合は、適切な要求間隔時間を設定してください.データ側としては、完全なAPIを作成し、秘密データはインターネットに置かない.最後に、ルートディレクトリの下・robotsであるデータプロバイダが発行した爬虫類プロトコルを尊重する.txt・ファイル
  ,      :https://www.zhihu.com/robots.txt