紹介する
Pythonで実装されたWebクローラーには、ネットワーク要求を送信するための2つのモジュールがあり、1つ目はurllibモジュールで、2つ目は要求モジュールです。urllibモジュールは比較的古いモジュールであり、使用するのが面倒で不便です。requestsモジュールが出現すると、すぐにurllibモジュールが置き換えられたため、コースでは、requestsモジュールを使用することをお勧めします。
リクエスト人間が安全に楽しむことができる、遺伝子改変されていない唯一のPython HTTPライブラリ。
警告:他のHTTPライブラリを専門家以外で使用すると、セキュリティ上の欠陥、冗長なコード、車輪の再発明、ニブル、うつ病、頭痛、さらには死に至る危険な副作用が発生する可能性があります。
リクエストとは
要求モジュールは、PythonのネイティブなWebベースの要求モジュールであり、その主な機能は、ブラウザーをシミュレートして要求を開始することです。強力でシンプルで効率的な使用法。爬虫類の分野では、国の半分を占めています。
リクエストモジュールを使用する理由
urllibモジュールを使用する場合、以下のように要約される多くの不便があります:
1. URLエンコーディングを手動で処理する
2.リクエスト後のパラメータを手動で処理する
3. Cookieとプロキシ操作の扱いにくい処理
リクエストモジュールを使用します。
1. URLエンコーディングを自動的に処理する
2.リクエスト後のパラメータを自動的に処理する
3. Cookieとプロキシ操作を簡素化する
リクエストモジュールの使い方
環境インストール: pipインストール要求
使用プロセス/コーディングプロセス
1、指定url
2.リクエストモジュールに基づいてリクエストを開始する
3.応答オブジェクトのデータ値を取得します
4.永続的なストレージ
ケース:クローラープログラム
ケース1:シンプルなWebページコレクター
WD =入力(' >>> ' ) PARAM = { ' WD ' :WD } URL = ' http://www.baidu.com/baidu ' #UA伪装 ヘッダ= { ' のUser-Agent ':' のMozilla / 5.0 (Windows NT 10.0; Win64; x64)AppleWebKit / 537.36(KHTML、like Gecko)Chrome / 80.0.3987.149 Safari / 537.36 OPR / 67.0.3575.115(Edition B2)' } info = requests.get(url = url、params = param 、headers = ヘッダー) info_text = info.text with open(r 'C:\ Users \ Administrator \ Desktop \%s.html '%wd、' w '、encoding = ' utf-8 ' )as f: f.writelines(info_text) print(' 爬取完毕')
ケース2:KFCストア情報
import リクエスト import json info = [] def kfc(num): url = " http://www.kfc.com.cn/kfccda/ashx/GetStoreList.ashx " data = { " op ":" keyword " 、 ' cname ':' ' 、 ' pid ':' ' 、 ' keyword ':' 杭州' 、 'pageIndex' :num、 ' pageSize ':' 10 ' 、 } header = { " User-Agent ":" Mozilla / 5.0(Windows NT 10.0; Win64; x64)AppleWebKit / 537.36(KHTML、like Gecko)Chrome / 73.0.3683.86 Safari /537.36 " 、 } req = requests.post(url = url、data = data、headers = header).json() info.append(req) print (req) for i in range(9 ): i + = 1 kfc (i) txt = open(r' C:\ Users \ Administrator \ Desktop \ KFC.json '、' a '、encoding = ' utf-8 ' ) json.dump(info、fp = txt、Ensure_ascii = False) print(' over ')
ケース3:化粧品製造ライセンスの関連情報
インポート要求 import json id = [] info = [] url = ' http://125.35.6.84:81/xk/itownet/portalAction.do ' header = { " User-Agent ":" Mozilla / 5.0(Windows NT 10.0 ; Win64; x64)AppleWebKit / 537.36(KHTML、like Gecko)Chrome / 73.0.3683.86 Safari / 537.36 " 、 #'Cookie': 'JSESSIONID = 02AF3EF8CBE74529A7F6231987EE1A6A; JSESSIONID = 64B83D7B541CEED78E13CF74B321D7A0' } のための I における範囲(1、6 ): I =str(i) data = { ' method ':' getXkzsList ' 、 ' on ':' true ' 、 ' page ' :i、 ' pageSize ':' 15 ' 、 ' productName ':'' 、 ' conditionType ':' 1 ' 、 'applyname ':'' 、 ' applysn ':'' } req_id = requests.post(url = url、data = data、headers = header).json() for i in req_id [ ' list ' ]: id.append(i [ ' ID ' ]) for j in id: url = ' http://125.35.6.84:81/xk/itownet/portalAction.do ' data = { ' method ':' getXkzsById ' 、 ' id ' :j } req_info = requests.post(url = url、data = data、headers = header).json() info.append(req_info) txt = open(r ' C:\ Users \ Administrator \ Desktop \ juqing .json '、' a '、encoding = ' utf-8 ' ) json.dump(info、txt、Ensure_ascii = False) print(' over ')