爬虫類学習ノート-requests
爬虫類の用途爬虫類のデータはデータ分析または人工知能にサービスを提供し、訓練データ ウェブサイトのためにデータの展示をします 微博、掲示板などの社交属性のデータ、世論分析、広報 に用いる金融データ(株式情報)、投資意思決定 12306切符を奪う サイトでの投票 メール爆撃:60の登録サイトを探して、シミュレーションは各サイトにメール検証コードを送信させて、循環を行って、毎秒1つを送信して、メール爆撃 を実現します
爬虫類の概念
シミュレーションブラウザがリクエストを送信し、リクエスト応答を取得
爬虫類の流れ
url->リクエストの送信、レスポンスの取得->データの抽出->保存、レスポンスの取得->urlアドレスの抽出、リクエストの続行
pagerankアルゴリズム、Webページランキング
robotsプロトコル
検索エンジンの爬虫類が這い出すデータの範囲を制限するが、道徳的な制約にすぎない.
httpとHTTPSの復習
urlの形式
urlの形式:scheme://host[:port#]/path/…/[?query-string][#anchor] scheme:プロトコル(例:http,https,ftp) host:サーバのIPアドレスまたはドメイン名 port:サーバのポート(プロトコルデフォルトポートの場合、80 or 443) path:リソースへのアクセスパス query-string:パラメータ、httpサーバに送信されるデータ anchor:アンカー(Webページの指定したアンカー位置にジャンプ) http://localhost:4000/file/part01/1.2.html http://item.jd.com/11936238.html#product-detail urlアドレスにアンカーポイントが含まれているかどうかは、応答に影響を及ぼさない .
爬虫類は1回のリクエストしか送信できません.ブラウザはデータがすべてではないことを発見してajaxを通じて何度もリクエストします.
爬虫類はjsの中の内容を持っていません
getとpostの違い:は直感的に意味的な違いであり、getはデータを取得するために使用され、postはデータをコミットするために使用される. getパラメータには長さ制限(urlの長さに制限され、具体的な数値はブラウザとサーバの制限に依存する)があり、postには が制限されていない. GET要求、要求したデータはURLの後で添付して、以?URLと転送データを分割し、複数のパラメータを&接続し、POSTリクエストはリクエストしたデータをHTTPリクエスト体に配置します. 詳細はpostリクエストとgetリクエストの違い を参照してください.
ストリングコーディング
python 3デフォルト符号化方式utf-8 str->bytes encode()符号化、デフォルトはutf-8 bytes->str decode()復号、デフォルトはutf-8 requests
ブラウザ–httpsプロトコル--Webサイト
爬虫類–httpプロトコル-Webサイト
要求ヘッダ: User-Agent:サーバに、アクセス者のID を伝える. cookies:セッションを保持 Referr:ページジャンプ jsonフォーマットをpythonタイプに変換し、python辞書に変換しません.
エージェント
ユーザはサーバipがプロキシVPNクライアントにプロキシされていることを知っている.
ユーザはサーバipが逆エージェントであることを知らないNginxサーバがエージェントされる
postリクエストの送信
プロキシの使用
ウェブサイトはipアクセスの頻度によって爬虫類かどうかを判断することができて、アクセスが速すぎると遮断されます
エージェントを使用可能
エージェント
Nginx
UWSGI uWSGI
u大文字はプロトコル、小文字はサーバ
Googleが提供する3つの論文の1つ:
コンシステンシハッシュによる負荷等化
cookie
クッキーの設定時にdomain=.baidu.com
Sessionクラスはクッキーを保持するために使用されます
エージェント透明エージェント(Transparent Proxy):透明エージェントはあなたのIPアドレスを直接「隠す」ことができますが、HTTP_X_FORWARDED_FORはあなたが誰なのか調べに来ました. 匿名エージェント(Anonymous Proxy):エージェントを使用していることは知られていますが、実際のIP はわかりません.混同エージェント(Distorting Proxies):他の人はあなたがエージェントを使っていることを知っていますが、偽のIPアドレスが得られ、よりリアルに偽装されています. 高匿エージェント(Elite proxyまたはHigh Anonymity Proxy):他の人はあなたがエージェント を使っていることを発見できません.
クッキーとセッション cookieにはサイズの制限があり、cookieは単一サイトで最大20個保存され、sessionには制限がなく、サーバーのハードディスクがどれだけ大きいかで保存できます. cookieはクライアントが存在し、安全ではなく、sessionはサーバが存在し、安全 はいずれもセッション保持 として使用する.
Flaskオリジナルのセッションはクライアントが存在し、そのセッションはクッキーに依存する.
base 64で暗号化するだけで、可逆的です.
requestsのSessionクラス
このクラスを使用するとログイン状態を維持でき、リクエストするたびにクッキーを持参し、爬虫類をブラウザのようにすることができます.
requestsはクッキーを携帯してログインします cookie文字列headersに 配置クッキー辞書をrequestsリクエストメソッドのクッキー に渡す
headersのクッキーを優先的に使用
見つからないとパラメータのクッキーを使う
Preserve log:コンソールボタン、継続ログ
<>括弧で囲まれたオブジェクト
ログインインタフェースの探し方 formフォームaction対応urlアドレス ユーザー名とパスワードのinputラベルでは、nameの値をキー、ユーザー名とパスワードを値の辞書としてpost data とする.
パケットをキャプチャすることによってurlアドレスを位置決めする form data
jsを分析し、暗号化されたデータを取得する変化を観察 位置決めjs event listenerによってjsの位置 を位置決めする urlアドレスのキーワードを検索することにより、chromeのsearch all fileにより を検索する.
分析 ブレークポイントを追加することによってjs を解析する.
実行js pythonシミュレーションjsを完全に使用する実行プロセス
requests ssl証明書の処理
応答中のクッキーを取得し、辞書に変換
タイムアウトパラメータの使用
retryingモジュールの使用 from retrying import retry 装飾器を用いるretryを用いて異常捕獲を行い、装飾された関数 を再実行する.
データの分類構造化データ json,xml モジュールを直接使用してpythonタイプ に変換
非構造化データ html re,xpath
jsonモジュールの使用
json.loads:json文字列をpythonタイプに変換
json.dumps:pythonタイプをjson文字列に変換
json.load:json文字列を含むクラスファイルオブジェクトをpythonタイプに変換
json.dump:p需要を:蘇寧易購入のすべての図書と図書の分類情報を取得する
爬虫類の概念
シミュレーションブラウザがリクエストを送信し、リクエスト応答を取得
爬虫類の流れ
url->リクエストの送信、レスポンスの取得->データの抽出->保存、レスポンスの取得->urlアドレスの抽出、リクエストの続行
pagerankアルゴリズム、Webページランキング
robotsプロトコル
検索エンジンの爬虫類が這い出すデータの範囲を制限するが、道徳的な制約にすぎない.
httpとHTTPSの復習
urlの形式
urlの形式:scheme://host[:port#]/path/…/[?query-string][#anchor]
爬虫類は1回のリクエストしか送信できません.ブラウザはデータがすべてではないことを発見してajaxを通じて何度もリクエストします.
爬虫類はjsの中の内容を持っていません
getとpostの違い:
ストリングコーディング
python 3デフォルト符号化方式utf-8
resp = request.get(url)
resp.content # bytes ,
resp.text # ,
resp.encodeing = 'utf-8' #
ブラウザ–httpsプロトコル--Webサイト
爬虫類–httpプロトコル-Webサイト
要求ヘッダ:
エージェント
ユーザはサーバipがプロキシVPNクライアントにプロキシされていることを知っている.
ユーザはサーバipが逆エージェントであることを知らないNginxサーバがエージェントされる
postリクエストの送信
data = {" formdata "}
requests.post(url, data=data)
プロキシの使用
ウェブサイトはipアクセスの頻度によって爬虫類かどうかを判断することができて、アクセスが速すぎると遮断されます
エージェントを使用可能
proxies = {“ ”: “ + ip + ”}
requests.get(url, proxies=proxies)
エージェント
Nginx
UWSGI uWSGI
u大文字はプロトコル、小文字はサーバ
Googleが提供する3つの論文の1つ:
コンシステンシハッシュによる負荷等化
cookie
クッキーの設定時にdomain=.baidu.com
Sessionクラスはクッキーを保持するために使用されます
エージェント
クッキーとセッション
Flaskオリジナルのセッションはクライアントが存在し、そのセッションはクッキーに依存する.
base 64で暗号化するだけで、可逆的です.
requestsのSessionクラス
このクラスを使用するとログイン状態を維持でき、リクエストするたびにクッキーを持参し、爬虫類をブラウザのようにすることができます.
requestsはクッキーを携帯してログインします
headersのクッキーを優先的に使用
見つからないとパラメータのクッキーを使う
Preserve log:コンソールボタン、継続ログ
<>括弧で囲まれたオブジェクト
ログインインタフェースの探し方
jsを分析し、暗号化されたデータを取得する
requests ssl証明書の処理
requests.get(url,verify=False)
応答中のクッキーを取得し、辞書に変換
response = requests.get(url,headers=headers)
requests.utils.dict_from_cookiejar(response.cookies)
タイムアウトパラメータの使用
requests.get(url, timeout=3)
retryingモジュールの使用
データの分類
jsonモジュールの使用
json.loads:json文字列をpythonタイプに変換
json.dumps:pythonタイプをjson文字列に変換
json.load:json文字列を含むクラスファイルオブジェクトをpythonタイプに変換
json.dump:p需要を:蘇寧易購入のすべての図書と図書の分類情報を取得する