基本的なライブラリのPythonのWebクローラーのリクエスト

取得のWebコンテンツにurllibはライブラリを学習する前に、しかし要求ライブラリと比較して、urllibは本当に弱いバースト、要求を達成することができるurllibはいくつかのモジュールを起動せずに、非常に便利な使用にある多くのモジュールを提供します。

ライブラリは、強く要求ライブラリーは、Webコンテンツを取得することが推奨されるように、最初のインストールに徐、とにかくピップクリックを使用してPythonライブラリをインストールする前に言っているのPython、付属していますライブラリではありません要求します。

し1.Get要求

GETリクエストは、最も一般的な要求で要求されています。例を見てください:

import requests

r = requests.get("http://httpbin.org/get")
print(r.text)

|#以下为输出内容:
{
  "args": {}, 
  "headers": {
    "Accept": "*/*", 
    "Accept-Encoding": "gzip, deflate", 
    "Host": "httpbin.org", 
    "User-Agent": "python-requests/2.18.4", 
    "X-Amzn-Trace-Id": "Root=1-5e7b817a-642ede6f41b26bdf583d312d"
  }, 
  "origin": "120.229.19.26", 
  "url": "http://httpbin.org/get"
}

上記の単純なGETリクエストは、リクエストヘッダ返された結果、URL、IPおよび他の情報を含んでいます。

あなたがリクエストにパラメータを追加するとした場合どのようにそれを達成するには?PARAMSパラメータは次にparamsは、以下の例ショーを渡すパラメータは、最大記憶されている辞書に追加されるために使用することができます。

import requests

data = {
    "name" : "Marty",
    "age" : 18
}
r = requests.get("http://httpbin.org/get", params=data)
print(r.text)

\#以下为输出结果:
{
  "args": {
    "age": "18", 
    "name": "Marty"
  }, 
  "headers": {
    "Accept": "*/*", 
    "Accept-Encoding": "gzip, deflate", 
    "Host": "httpbin.org", 
    "User-Agent": "python-requests/2.18.4", 
    "X-Amzn-Trace-Id": "Root=1-5e7b877e-a8afd42005f62ca0e4ef7f20"
  }, 
  "origin": "120.229.19.26", 
  "url": "http://httpbin.org/get?name=Marty&age=18"
}

私たちは、URLとなり、要求のリンクが自動的に構築され、あなたは、返された結果を見ることができ、リクエストパラメータを渡します「http://httpbin.org/get?name=Marty&age=18

加えて、我々はページの戻り値の型が文字列であるタイプのSTR、ですが、それはJSON形式であることがわかります。我々が解析し、JSON()メソッドを呼び出すことができるように辞書形式を取得します。つまり、結果を返すことができるJSON()メソッドは、JSON辞書を変換するための文字列の形式です。

print(type(r.text))
print(r.json())
print(type(r.json()))
\#以下为输出结果:
<class 'str'>
{'args': {'age': '18', 'name': 'Marty'}, 'headers': {'Accept': '*/*', 'Accept-Encoding': 'gzip, deflate', 'Host': 'httpbin.org', 'User-Agent': 'python-requests/2.18.4', 'X-Amzn-Trace-Id': 'Root=1-5e7b877e-a8afd42005f62ca0e4ef7f20'}, 'origin': '120.229.19.26', 'url': 'http://httpbin.org/get?name=Marty&age=18'}
<class 'dict'>
  • ウェブをクロール

知られているほとんどの「検索」ページでは、例えば:

import requests
import re

header = {
    'user-agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36'
}
r = requests.get("http://www.zhihu.com/explore", headers = header)
pattern = re.compile("ExploreRoundtableCard-questionTitle.*?>(.*?)</a>", re.S)
titles = re.findall(pattern, r.text)
print(titles)
\#以下为输出结果:
['有没有萝莉控福音的gal呢?', '如何看待galgame中男主的平行性格?', 'Steam 上有什么优秀的Galgame?', '读完《攀岩人生》,你有什么感想?', '攀岩有何魅力?为什么近两年攀岩运动开始在国内悄悄兴起?', '如果2020年发生了经济危机你会如何应对?', '为什么这么多人想转行做产品经理?', '疫情过后会滋生出新的行业吗?什么产品会火爆?', '为什么找个产品助理的职位都这么难?', '东京奥运会推迟至 2021 年将在多大程度上影响日本经济?会给日本带来多大的经济损失?', '如何看待日本奥委会被曝购买慕尼黑再保险公司的「奥运取消保险」?', '东京奥运会推迟至 2021 年夏天,会给后续产生什么影响?']

私たちは、GETリクエストヘッダにパラメータを追加して、このパラメータの導入はこれがない、それはクロールを禁止されて、ブラウザを装った私たちのプログラムを置くことができます。

ネットワークを、単にWebページを開く、それを見るの要素を確認し、選択するには、このユーザー・エージェントは、あなたは以下を参照できるページがサーバーに非常に多くのリクエストを送信することを総負荷を表すエントリがたくさんあります。エントリを開くにはさりげなくポイント、一番下にあるハードウェア(電話またはコンピュータ)が含まれ、ユーザーエージェント場所が、あるあなたが使用して、ブランド、システムの種類、どのブラウザやその他の情報。もちろん、この引数は、オンライン多くのコンテンツを識別し、自分のコンピュータのブラウザのユーザーエージェントを選択する必要はありません。

  • グラブのバイナリデータ

      import requests
    
      r = requests.get("https://github.com/favicon.ico")
      print(r.text)
      print(r.content)
      #以下为输出:
      $$ �������������� +++G��������G+++
      b'\x00\x00\x01\x00\x02\x00\x10\x10\x00\x00\x01\x00 \x00(\x05\x00\x00&\x00\x00\x00  \x00\x00\x01\x00 \x00(\x14\x00\x00N\x05\x00\x00(\x00\x00\x00\x10\x00\x00\x00 \x00\x00\x00\x01\x00 \x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x
    

上の写真のリクエスト(サイトのラベル上の小さなアイコン)、写真、オーディオおよびビデオファイルは、本質的にバイナリコーディングで構成されている、特定の保全及び対応する分析方法があります。そこで、彼らは彼らの集落のバイナリコードを取得することになるでしょう。

R印刷属性はr.text結果が文字化けし、見ることができ、コンテンツは、(単語Bとの文の前に)バイナリコードです。画像はバイナリであるため、プリントがSTR型に変換されるので、間違っています。

テキストとコンテンツの間の差によってここに。コンテンツは、返されたデータの元のソースです。テキストは、符号化されたデータによって返されます。

利用可能なは保存され、以下のコードされます。

import requests
r = requests.get("https://github.com/favicon.ico")
with open("favicon.ico", 'wb') as f:
    f.write(r.content)

同様に、オーディオ、ビデオにもこのようにして得ることができます。





これ以上、睡眠を書かないことがあまりにも眠いです。

おすすめ

転載: www.cnblogs.com/shuai3290/p/12571921.html