スパイダーデータマイニング-3、ライブラリの理解を要求

REquesetsライブラリ:(他のhttpライブラリよりも単純)
1。はじめに:
getおよびその他のメソッドを直接呼び出しのインターフェイスとして記述します。これは基本的にWeb要求のすべての要件を完全に満たします。

2.リクエストを開始します。
各リクエストメソッドには対応するAPIがあります。たとえば、GETリクエストではget()メソッドと
post()メソッドを使用できます。送信する必要のあるデータをデータパラメータに渡します。POSTリクエストはフォームを送信します。データを介してデータを送信します。、jsonパラメータを介してjsonデータを送信します
。jsonとデータを同時に追加することはできません。同時に追加するとjsonにデータが生成されません。
データを送信するjsonメソッドはフォームを形成しません。メソッドは、jsonデータ
リクエストを形成せずにフォームを形成するだけです。urllibと同様に、さまざまなリクエスト、オープナー、ハンドラーを作成する必要があります。リクエスト作成のメソッドを使用して、必要なパラメーターを渡します。
ディクショナリを作成し、
同じURLパラメータ名を要求するときにparamsパラメータ(自動エンコーディング関数を含む)に渡しますが、値が異なり、Pythonディクショナリは同じキー名をサポートしていないため、キーを変更できます。リストで表される
カスタム要求のヘッダ。同様に、辞書データは、ヘッダパラメータに渡され
たカスタムクッキーのCookieJarオブジェクトを構築する不要になった、と辞書は直接クッキーパラメータに渡されます。
要求がある場合cookieJarを構築するには、リクエストの構築をクロスサイトクロスパスで使用できます。より完全な関数
最初にクラスオブジェクトを構築します
。jay = requests.cookies.RequestsCookiesJar()このオブジェクトにはsetメソッドjay.set( 'cookie11'があります。 、 'ai'、domain = 'site'、path '/ cookies(サイト内のパス)')、
サイトとパスが一致しない場合、Cookieは伝送されません。サイトとパスが存在する場合、サイト間でCookieを保存し、複数のサイト間でパスを保存できます
プロキシを使用する場合、プロキシディクショナリも作成されてプロキシパラメータに渡され、httpプロトコルとhttpsプロトコルのプロキシアドレスを同時に書き込むことができます
。ディクショナリを渡さずに、アクセスタイムアウトとタイムアウトパラメータを設定します。 。基本的には使用しますが、使用しないとプログラムが永久に応答しなくなる場合があります。サーバーが応答する限り、時間は制限されません。リクエストは
デフォルトでリダイレクトされます。
一部のWebサイトでは証明書の検証が必要です。sslerrorが表示された場合は、verify = falseを設定して、
証明書の検証の失敗を解決できます。verifyをfalseに変更します。終了後、警告が表示されます。コードを使用できます。この警告をオフにするには、
requests.packages.urllib3.disable_warnings()がリクエストを介してurllib3ライブラリを呼び出し、urllib3をインポートせずに警告を解決します。3。応答の属性テキストを
受信
しますオブジェクト
(デコードあり):バイトコードではなく、文字列に直接変換されます。テキストが正しくデコードされない場合は、デコードするエンコード形式を手動で指定する必要があります。
リクエストは、Webページのエンコーディングを推測し、推測されたエンコーディングに従ってWebページのコンテンツをデコードすることです。推測が間違っている場合があり、手動でデコードし
ます。res.enconde= 'utf-8'(if gbkまたはasciiコード形式に置き換えられ、後で使用されるテキストも使用されます)
print(res.text)(resを定義するエンコード形式を再利用し、テキストはすぐにencondeのエンコード形式を使用します)
content(image dataはこのパラメータを使用します):最も元のデータ、単語セクションコードを取得します。テキストが一致する場合、非バイトコードで解釈することはできません。空の場合、コンテンツを使用できます。
raw:ソケットからの応答データに属するコンテンツよりも多くのプリミティブデータを取得します。使用する前に、リクエストリクエストのメソッドストリームを使用してtrueに調整する必要があります。raw.read(10)は長さ
json()をサイズ10で読み取ります。自動的に辞書形式に変換されます(jsonデータをに返す必要があります)このメソッドを使用します。それ以外の場合はError)、続いて['headers']はキーの値を取得する方法であり
、['ko'] ['ui']はkoキーのuiキーの値を取得する方法です。 (辞書で辞書を取得し
ますcookie:応答を表示しますcookie値
request.url:要求されたurl
ヘッダーを表示します:応答ヘッダーを
取得しますrequest.headers:要求ヘッダーを取得し
ます4:セッションオブジェクト
sessionメソッドはリクエストライブラリにリクエストを開始するために、このメソッドはページにアクセスして取得したCookie値を自動的に保存します。そのため、再度アクセスすると、Cookieの
従来のログインロジック
機能が自動的に実行されます。一般的に使用されるリクエストヘッダー情報が自動的に更新されます。アカウントにログインし
たら、最初にログインページのURLにアクセスし、次にデータ送信のURLにアクセスします(URLは送信のためにログインページでデータを収集します)セッションの使用はrequests.getと同様です。セッションを使用する場合、最初にセッションオブジェクトを作成する必要があります
session = requests.session()セッションオブジェクト
session.headers = headersを作成して、セッションに設定されたリクエストヘッダーにリクエストヘッダーを直接追加します。その後、リクエストヘッダーメソッドをに追加する必要はありません。パラメーター
session.get(url)ここで、requestsオブジェクトはsessionオブジェクトに置き換えられます。これはrequestsオブジェクトよりも優れています。requestヘッダーは括弧内で自動的に更新されるため、ヘッダーパラメータを追加する必要はなく、必要もありません。 cookie
アクセスページcookieとページ内のloginurl cookieを変更するには同じではないため、セッションオブジェクトは自動的に正しいset_cookieに変更されて要求を行い
ますサーバーはcookieをcookieに渡します:~~

(これはセッションによって自動的に更新されるコンテンツです)、検証を要求するためのCookieが設定されます。cookie:~~~

Baidu画像の複数のページ(複数のページ)をクロールするリクエストは
、3つの連続するページページを通過し、URLを比較して、pn(PageNumber)値が特定のパターン(30、60、90、1回のクロール30ページ、2回目)を持っていることを確認します1ページに3回、合計60、90 30枚の画像
https://cn.bing.com/images/search?q=%E6%9C%BA%E7%94%B2&form=HDRSC2&first=3(番号はこちら)ページ数、ここで使用ループが変更された後、複数のページをクロールできます)&tsc = ImageHoverTitle
URLを取得した後、情報を取得するためにforループ内のURLにリクエストを送信する必要があります。そうしないと、base64しか取得できません。文字化けしたコード

購入したプロキシIPを使用します:
from proxy_dir ~~~~~ import proxy ~~~~~
proxymeta = 'http ~~%~~%〜%

(ここではユーザー名とパスワードのデータが必要であり、ユーザーは事前に本名を確認する必要があります) '%{' host ':proxyHost、'〜':〜、~~・}
proxy = {"http":proxymeta 、 "https":proxymeta}このステップと購入する必要のないIPプロキシは

anaconda:pythonの管理、pythonインストールパッケージの管理、各パッケージ間の場所、一部のライブラリの使用は、pythonのみを使用するよりも便利です
。anacondaを作成してanaconda仮想環境を作成し、最後に
ローカルで環境を切り替えることを忘れないでください。使用すると、ツイストパッケージとの互換性がなくなります。anaconda環境で使用すると、互換性が向上します。

セカンダリURLには通常、最初のWebサイトのURLよりも多くのURLパラメータしかないため、セカンダリWebページに入力するコードで着信URLパラメータを作成する必要があることがよくあります。

おすすめ

転載: blog.csdn.net/qwe863226687/article/details/114116735