python爬虫類ネットワーク要求事例詳細
前の基礎と爬虫類の基礎を勉強してから、ネットを習い始めます。
まず来てみます。urllib
urllibの紹介
urllibはPythonが持参した標準ライブラリの中で、ネットワーク要求用のライブラリです。インストールする必要がなく、直接参照すればいいです。
主に爬虫類の開発に使われます。APIデータの取得とテストに使われます。
urllibライブラリの四大モジュール: urllib.request:url を開くために使用されます。 urllib.error:提出された例外を含み、urllib.request urllib.parse:解析用url urllib.robotparser:解析用robots.txt ケース
ブラウザではインターネットの老辛を非中国語に変えています。
ブラウザでインターネットを検索して、ブラウズ中のコピーをします。
https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=baidu&wd=%E 4%BA% 92%E 8%81%94%E 7%BD%91%E 8%80%E 8%8%8%E 8%BE%9 B&fenlei=256&oq=%25 E 7%258 E%25 E 5%259 B%259 B%252&rsvpq=aa 5 b 8079001 eec 3 e&rsv_t=9 d 1 VMqcHzdaH 7 l 2 O 1 E 8 kMBcAS 8 OfSAGW HGWHgUYs foVtGN BNVzHRatL 1 TU&rqlang=cn&rsv_ベンダー=1&rsv_dl=tb&rsv_btype=t&input=3542&rsv_sug 2=0&rsv_sug 4=3542
よく見てください。太めの部分はコードから出力されたwdの結果ですか?
要求を送信する urllib.requestライブラリ 模擬ブラウザでhttp要求を開始し、要求の応答結果を取得する。 urllib.request.urlopenの構文フォーマット: urlopen(url,data=None)*,cafile=None,capath=None,cadefault=False,context=None
パラメータの説明:
url:strタイプのアドレス、つまり訪問するURL、例えばhttps://www/baidu.com
data:標準値はNoneです。
urlopen:関数はhttp.client.HTTPResonseオブジェクトを返します。
コードケース
get要求
要求-Request要求を送信します。
私たちは豆の花びらを取りに行きます。
このような私たちには偽装要求ヘッドが必要です。
私たちはホームページの中のuser-Agentを見つけました。
IPプロキシ
openerの使用、自分のopenerを構築して要求を送ります。
IPエージェントの分類:透明エージェント:ターゲットサイトはあなたがプロキシを使っていることを知っています。そして、あなたのソースIPアドレスを知っています。 匿名代理店:ウェブサイトはあなたがプロキシを使ったことを知っていますが、あなたのソースip は分かりません。高隠匿代理店:これは一番安全な方法です。カタログサイトは代理店 を使っていますか?
ipエージェントの方式:
無料:https://www.xicidaili.com/nn/
有料:象の代理、高速代理、ゴマの代理
クッキーを使う
なぜクッキーを使いますか?
cookieを使うのは主にhttpの無状態性を解決するためです。
使用手順:实例化モザイクCookie jar(cookieを保存) は、handlerオブジェクト(cookieのプロセッサ) を作成する。 openerオブジェクト を作成します。ウェブページを開く(送信要求取得応答) クッキーファイル を保存します。
実例:Baiduのシールを取得したクッキーを保存します。
私たちはアクセスできないウェブサイトに登って異常を捕まえます。
ネットの要求はもう勉強し終わりました。後はよく使う倉庫をいくつか勉強して、データの取得ができます。
ここでは、python爬虫類シリーズのネットワーク要求例について詳しく説明した文章を紹介します。python爬虫類ネットワークの要請内容については、以前の文章を検索したり、次の関連記事を見たりしてください。これからもよろしくお願いします。
まず来てみます。urllib
urllibの紹介
urllibはPythonが持参した標準ライブラリの中で、ネットワーク要求用のライブラリです。インストールする必要がなく、直接参照すればいいです。
主に爬虫類の開発に使われます。APIデータの取得とテストに使われます。
urllibライブラリの四大モジュール:
# :
# :2021/4/5/0005 8:23
import urllib.parse
kw={'wd':" "}
result=urllib.parse.urlencode(kw)
print(result)
#
res=urllib.parse.unquote(result)
print(res)
ブラウザではインターネットの老辛を非中国語に変えています。
ブラウザでインターネットを検索して、ブラウズ中のコピーをします。
https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=baidu&wd=%E 4%BA% 92%E 8%81%94%E 7%BD%91%E 8%80%E 8%8%8%E 8%BE%9 B&fenlei=256&oq=%25 E 7%258 E%25 E 5%259 B%259 B%252&rsvpq=aa 5 b 8079001 eec 3 e&rsv_t=9 d 1 VMqcHzdaH 7 l 2 O 1 E 8 kMBcAS 8 OfSAGW HGWHgUYs foVtGN BNVzHRatL 1 TU&rqlang=cn&rsv_ベンダー=1&rsv_dl=tb&rsv_btype=t&input=3542&rsv_sug 2=0&rsv_sug 4=3542
よく見てください。太めの部分はコードから出力されたwdの結果ですか?
要求を送信する
パラメータの説明:
url:strタイプのアドレス、つまり訪問するURL、例えばhttps://www/baidu.com
data:標準値はNoneです。
urlopen:関数はhttp.client.HTTPResonseオブジェクトを返します。
コードケース
get要求
# :
# :2021/4/5/0005 8:23
import urllib.request
url="http://www.geekyunwei.com/"
resp=urllib.request.urlopen(url)
html=resp.read().decode('utf-8') # bytes utf-8
print(html)
なぜ、utf-8に変更したのですか?gbkではなく、ここでウェブページのチェックページのソースコードには何が含まれていますか?要求-Request要求を送信します。
私たちは豆の花びらを取りに行きます。
# :
# :2021/4/5/0005 8:23
import urllib.request
url="https://movie.douban.com/"
resp=urllib.request.urlopen(url)
print(resp)
豆瓣はアンチ爬虫術があります。直接418エラーを報告します。このような私たちには偽装要求ヘッドが必要です。
私たちはホームページの中のuser-Agentを見つけました。
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3861.400 QQBrowser/10.7.4313.400
# :
# :2021/4/5/0005 8:23
import urllib.request
url="https://movie.douban.com/"
headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3861.400 QQBrowser/10.7.4313.400'}
#
req=urllib.request.Request(url,headers=headers)
# urlopen
resp=urllib.request.urlopen(req)
#
html=resp.read().decode('utf-8')
print(html)
これでPythonを使ってブラウザに偽装してデータを取得しました。IPプロキシ
openerの使用、自分のopenerを構築して要求を送ります。
# :
# :2021/4/5/0005 8:23
import urllib.request
url="https://www.baidu.com/"
headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3861.400 QQBrowser/10.7.4313.400'}
#
req=urllib.request.Request(url,headers=headers)
opener=urllib.request.build_opener()
resp=opener.open(req)
print(resp.read().decode())
もしあなたが要求を送信し続けたら、彼はあなたにIPを禁止する可能性があります。だから、私達はしばらくの間にIPエージェントを交換します。IPエージェントの分類:
ipエージェントの方式:
無料:https://www.xicidaili.com/nn/
有料:象の代理、高速代理、ゴマの代理
# :
# :2021/4/5/0005 8:23
from urllib.request import build_opener
from urllib.request import ProxyHandler
proxy=ProxyHandler({'https':'222.184.90.241:4278'})
opener=build_opener(proxy)
url='https://www.baidu.com/'
resp=opener.open(url)
print(resp.read().decode('utf-8'))
Baiduは実際には反対に登ることができます。たとえ高い隠れ家の代理でも100%の回り道はできません。クッキーを使う
なぜクッキーを使いますか?
cookieを使うのは主にhttpの無状態性を解決するためです。
使用手順:
実例:Baiduのシールを取得したクッキーを保存します。
import urllib.request
from http import cookiejar
filename='cookie.txt'
def get_cookie():
cookie=cookiejar.MozillaCookieJar(filename)
# handler
handler=urllib.request.HTTPCookieProcessor(cookie)
opener=urllib.request.build_opener((handler))
#
url='https://tieba.baidu.com/f?kw=python3&fr=index'
resp=opener.open(url)
# cookie
cookie.save()
#
def use_cookie():
# MozillaCookieJar
cookie=cookiejar.MozillaCookieJar()
# cookie
cookie.load(filename)
print(cookie)
if __name__=='__main--':
use_cookie()
#get_cookie()
異常処理私たちはアクセスできないウェブサイトに登って異常を捕まえます。
# :
# :2021/4/6/0006 7:38
import urllib.request
import urllib.error
url='https://www.google.com'
try:
resp=urllib.request.urlopen(url)
except urllib.error.URLError as e:
print(e.reason)
異常捕獲が見られます。ネットの要求はもう勉強し終わりました。後はよく使う倉庫をいくつか勉強して、データの取得ができます。
ここでは、python爬虫類シリーズのネットワーク要求例について詳しく説明した文章を紹介します。python爬虫類ネットワークの要請内容については、以前の文章を検索したり、次の関連記事を見たりしてください。これからもよろしくお願いします。