PythonのWebクローラーの研究では、ビスがHTTPリクエストとパラメータの受け渡しを開始ノート

免責事項:この記事はブロガーオリジナル記事ですが、許可ブロガーなく再生してはなりません。https://blog.csdn.net/bowei026/article/details/90183795

レスポンスの内容を取得します

応答オブジェクトは属性を持つ:
テキスト要求すべて返されたコンテンツ
STATUS_CODEステータスコード
符号化エンコードされ
、このような\ nのようなコンテンツの応答バイトの内容は、キャリッジリターンを表し、\ T \ Rら
r.json()はJSON場合に返します文字列は、分析は、JSON形式のJSONデコーダに使用される要求が来ます

配信リクエストパラメータ

インポート要求

辞書= { 'KEY1': '値1'、 'KEY2': '値2'}
= 'http://httpbin.org/get'リンク
ヘッダー= { 'のUser-Agent':「のMozilla / 5.0(Windows NTの6.1。 Win64の、x64の)のAppleWebKit / 537.36(ゲッコー)クローム/ 73.0.3683.103サファリ/ 537.36'のようなKHTML、、 'コンテンツタイプ': 'text / htmlの'}
R = requests.get(リンク、ヘッダー=ヘッダ、paramsは=辞書)
プリント(r.content)
プリント(r.status_code)
プリント(r.json())
程序运行结果。
B '{\ n "引数":{\ n "KEY1": "値1"、\ n "KEY2": "値2" \ n}は、\ n "ヘッダ":{\ n "受け入れ":「* / * 」、\ n "は、エンコードを受け入れ:収縮、GZIP "を、\ nは"Content-Typeの""": "text / htmlの"、\ nは"ホスト": "httpbin.org"、\ nは"ユーザーエージェント": "Mozillaの/ 5.0(Windows NTの6.1; Win64の、x64の)のAppleWebKit / 537.36(KHTML、ヤモリなど)クローム/ 73.0.3683.103サファリ/ 537.36" \ n}は、\ nは"起源": "223.72.90.250、223.72.90.250" 、\ nは"URL":「https://httpbin.org/get?key1=value1&key2=value2"\n}\n」
200
{ '引数' { 'KEY1': '値1'、 'KEY2': 'value2の'} 'ヘッダー' { '受け入れる': '* / *'、 '符号化を受け入れ': 'GZIPを収縮させます'、 'Content-Typeの': 'text / htmlの'、 'ホスト': 'httpbin.org'、 'のUser-Agent':「のMozilla / 5.0(Windows NTの6.1; Win64の、x64の)のAppleWebKit / 537.36(ヤモリのようにKHTML、)クローム/ 73.0.3683.103サファリ/ 537.36' } '起源': '223.72.90.250、223.72.90.250'、 'URL': 'https://httpbin.org/get?key1=value1&key2=value2'}

リクエストパラメータを通して見えるPARAMS =辞書が正しくKEY1 =値1&KEY2 =値2が送信されてきました。さらに、あなたがコンパクトな形式のJSON形式にしたい場合は、データ・フォーマットは、オンラインツールhttp://www.bejson.com/を使用することができます

カスタムリクエストヘッダ

ユーザエージェントを介して送信上記のヘッダパラメータの例としては、我々のようなより多くの情報ヘッダ、伝えることができる
のインポート要求を

=リンク'http://httpbin.org/get'
ヘッダ= { 'ホスト': 'www.santostang.com'、 'User--エージェント':「のMozilla / 5.0(Windows NTの6.1; Win64の、x64-)のAppleWebKit / 537.36 (ヤモリ様KHTML)クローム/ 73.0.3683.103サファリ/ 537.36 ''タイプのコンテンツ':'テキスト/ HTML「}
R&LT requests.get =(リンク、ヘッダー=ヘッダ)
プリント(r.status_code)は
また、より多くを渡すことができ多くのヘッダパラメータは、ブラウザが参加することができ、要求からのリクエストヘッダの内容を表示します。

POSTリクエストを送信します

インポート要求

辞書= { 'KEY1': '値1'、 'KEY2': '値2'}
ヘッダー= { 'ホスト': 'www.santostang.com'、 'ユーザーエージェント':「のMozilla / 5.0(のWindows NT 6.1、Win64の;のx64)のAppleWebKit / 537.36(KHTML、ヤモリ等)クローム/ 73.0.3683.103サファリ/ 537.36' 、 'コンテンツタイプ': 'テキスト/ HTML'}
R = requests.post( 'http://httpbin.org/post 」、ヘッダ=ヘッダ、データ= dictの)
プリント(r.text)
运行结果:
{
  "引数":{}、 
  "データ": "キー1 =値1&KEY2 =値2"、 
  "ファイル":{}、 
  "フォーム": {}、 
  "ヘッダ":{
    "受け入れ": "* / *"、 
    "符号化を受け入れ、": "GZIP、収縮"、 
    "コンテンツの長さ": "23"、 
    "Content-Typeの": "text / htmlの"、 
    "ホスト": "www.santostang.com"、 
    "ユーザーエージェント": "のMozilla / 5.0(Windows NTの6.1; Win64の、x64の)のAppleWebKit / 537.36(KHTML、ヤモリなど)クローム/ 73.0.3683.103サファリ/ 537.36"
  }、 
  "JSON":ヌル、 
  "起源": " 223.72.90.250、223.72.90.250」、 
  『URL『:』https://www.santostang.com/post』
}
要求パラメータデータで指定されたPOSTリクエストのパラメータ値

タイムアウトを設定します

インポート要求

requests.post = R&LT(「http://httpbin.org/post」、タイムアウト= 0.001)
プリント(r.text)
結果:
0.001タイムアウトパラメータセットのタイムアウト値が小さすぎるため、プログラムの実行が与えられるsocket.timeout。タイムアウトになりました

クレソンネットワークtop250ムービーをクロール

import requests
from bs4 import BeautifulSoup

def getMovies():
	headers = {'Host' : 'movie.douban.com', 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36'}
	movies = []
	for i in range(0, 10):
		r = requests.post('https://movie.douban.com/top250?start=' + str(i * 25), headers=headers)

		soup = BeautifulSoup(r.text, 'lxml')
		div_list = soup.find_all('div', class_='hd')
		for div in div_list:
			title = div.a.span.text
			movies.append(title)

	return movies
		

movies = getMovies()
for i, movie in enumerate(movies):
	print(str(i+1) + "==" + movie)

最初の250映画のクレソンネットワークを表示するプログラムを実行します。

BeautifulSoup文書は、参照してください  https://www.crummy.com/software/BeautifulSoup/bs4/doc.zh/

これは、この記事を終わり、それが公共および個人的なマイクロ信号の数より心配することがあります。

おすすめ

転載: blog.csdn.net/bowei026/article/details/90183795