Pythonのドラえもんクローラ(要求モジュール)

## 2.requestsモジュール
 
- コンセプト:役割は、要求のネットワークモジュールに基づいて要求を開始し、ブラウザをシミュレートするために使用される。
 - エンコーディングプロセス:
   - 指定URL
   - リクエストを送信する
   - クローリングにデータ)応答データをフェッチ
   - 永続ストレージ
     - インストール環境:
     - PIPは、インストールを要求

 **リクエスト:** 

- GET / POSTを:
   - URL
   -データ/ のparams:パッケージのリクエストパラメータ
   - ヘッダ:UAの迷彩は
     - 動的によってロードされるどのようなデータ:追加のデータを要求する別の要求
     - アヤックス
     - JS
     - 動的にページをロードするデータがあるかどうかを識別するための方法
     - ローカル検索
     - グローバル検索
     -行うには、クロールの前に奇妙なウェブサイトへの第一歩?
     - あなたはクロールデータにしたいかどうかを判断し、動的にロードされます!!! 

### 2.1中国のゴミ問題

`` `Pythonの
#は中国を解決するには、文字化け 
WD =入力を(' 鍵Aを入力してください' 
URL = ' https://www.sogou.com/web ' 
保存されたパラメータの動的要求である 
のparams = {
     ' クエリ' :WD 
} 
#は必ずしも要求のparamsに適用することがparamsは、パラメータは、パッケージ要求のURLパラメータを示し 
応答= requests.get(URL = URL、paramsは= paramsは)

#は、手動で応答データを変更する符号化!!!!!!!!! 
response.encoding = ' UTF-を8 ' 

page_text= Response.text 
fileNameに = WD + ' .htmlを' 
オープン(ファイル名、との' W '、=エンコード' UTF-8。' )AS FP:
    fp.write(page_text)
印刷(WD、' !成功のダウンロード' 
` 

###抗登る2.2 UAとUA迷彩メカニズム

`` `Pythonの
#の問題:ほとんどのサイトは、検証を要求します、いないブラウザが要求を開始する場合、サーバはアクセス拒否されます


中国を解決するために文字化け&UA迷彩 
WD = INPUT(キーAを入力してください。
URL = https://www.sogou.com/web 
保存され、要求の動的パラメータであります
paramsは= {
     ' クエリ' :WD 
} 

#は程度では、ヘッダ情報に対応する要求を開始する 
ヘッダー= {
     ' User--エージェント'' (; Win64の、Windows NTの10.0 x64-)のMozilla / 5.0のAppleWebKit / 537.36(KHTML、ヤモリ等)クローム/サファリ76.0.3809.100 / 537.36 ' 
} 

必ずしも要求に適用することがparamsはのparamsパラメータパッケージを示す要求にあるURLパラメータヘッダパラメータを隠すために使用されるUAの達成 
応答= requests.get(URL = URL、 paramsは= paramsは、ヘッダー= ヘッダ)

手動でエンコードされたレスポンスデータ修正 
= response.encoding UTF-を8 

page_text = response.text 
fileNameに+ WD = ' .htmlを' 
オープン(ファイル名、との' W '、=エンコード' UTF-8。' )AS FP:
    fp.write(page_text)
印刷(WD、' ダウンロード成功!' 
` 

### 2.3ダイナミックローディングデータ

動的にページをロードするデータがあるかどうかを確認するにはどのように?

- ローカル検索のためのキャプチャツール
 - 動的データを検索するためにデータをロードする方法についてのページと判断された場合
   - グローバル検索の使用パケットキャプチャツール
 - なじみのないサイトデータには、クロールクロールする前に判断する必要がありますデータが動的にロードされているかどうか!!! 



`` `Pythonの
#の例のニーズは 
、企業の詳細情報をクロールします。http://125.35.6.84:81 / XK / 
分析:
 1 。データサイトのホームとビジネスの詳細ページです動的負荷アウト
 2。?データのビジネス企業の詳細の分析はどのように来ている
のAjaxリクエスト(ポスト)を介して、企業データの詳細へのお願い。
リクエストURLに対応する:HTTP: //125.35.6.84:81/xk/itownet/portalAction ?.doという方法、= getXkzsById 
ID:要求パラメータを搬送xxdxxxx 
結論:
 1 。各企業のデータの詳細ページは、要求にポストAJAXリクエストフォームからなる
 2 URL AJAXリクエストを対応する各企業。同じですが、やり方要求はポストは、唯一のidパラメータの値が同じ要求ではないです。
 3 のみ対応する詳細データを得るために、各企業に対応する各会社のid値を取得する必要があります。
必要性は各企業ののid値を取得するため
のアイデアを:各会社のid値は、対応するホーム関連の要求または応答に格納されなければならない。
結論:各会社のid値が応答データ、企業内だけ応答データに対応する一つのAJAXリクエストのホームに格納されていますIDエキス / 直後に出て解析します。
`` ` 

` `` Pythonの
#のコードを達成するために
#を該当するIDに会社を要求しないように 
URLを= " http://125.35.6.84:81/xk/itownet/portalAction.do ?方法= getXkzsList'
データ = {
     ' '' ' ' ページ'' 1 ' ' のpageSize '' 15 ' ' 商品名''' ' ConditionTypeを'' 1 ' ' applyname ''' ' applysn "'' 
}

FP(=オープン' ./company_detail.txt '' W ' =エンコード、' UTF-を。8 ' 

JSON()各企業IDの値が持つ返し 
data_dic = requests.post(URL = URL、をデータ=データ、ヘッダ= ヘッダ).json()
解析ID 
のために DIC  data_dic [ ' 一覧' ]:
    _id = DIC [ ' ID ' ]
 #の     印刷(_id) 
    データ・キャプチャに対応する業務IDの詳細について(開始要求) 
    POST_URL = 'http://125.35.6.84:81/xk/itownet/portalAction.do?method=getXkzsById ' 
    post_data = {
         ' ID ' :_id 
    } 
    #1 JSONの戻り値は、情報ビジネスリスティングの一つである 
    detail_dic = requests.post(URLをPOST_URL =、=データpost_data、ヘッダ= ヘッダ).json()
    COMPANY_TITLE = detail_dic [ ' epsName ' ] 
    アドレス = detail_dic [ ' epsProductAddress ' ] 
    
    fp.write(COMPANY_TITLE + ' ' +アドレス+ ' \ N- ' を印刷(COMPANY_TITLE、' 成功をクロール!!! '
fp.close()
`` `

 

おすすめ

転載: www.cnblogs.com/doraemon548542/p/11964364.html