1.python標準ライブラリurllibの使用[入門]
11790 ワード
この文章では,主にいくつかのurllibでよく用いられるクラス関数を紹介した.
1.urllib——処理URL 1.1. urllib.requestモジュール——読み出しURLを開く
1.1.1関数
1.1.2.クラス#クラス#urlパラメータは、文字列タイプであり、対応するリソースのurlである. headerパラメータは、辞書タイプの要求メッセージヘッダである.
class class 1.2. urllib.parse——解析URL
1.3. 例
最も簡単な例です
一部のサイトでは、リクエストヘッドを通じて、反爬虫類の制限が行われる可能性があります.したがって、次の例では、Resquestオブジェクトにheadersを設定できます.
中国語リクエストパラメータ付きurlにはurllibが必要です.parseテンプレート
エージェントはエージェントの設定を説明する文章を設定します
リファレンスpython公式文書urllib.request https://docs.python.org/zh-cn/3.7/library/urllib.request.html#request-objects python公式文書urllib.parse https://docs.python.org/zh-cn/3.7/library/urllib.parse.html#module-urllib.parse 陈桑啊丶.urllibライブラリgetとpostリクエストの送信https://www.cnblogs.com/chensang/p/10096352.html python公式文書http.client https://docs.python.org/zh-cn/3.7/library/http.client.html python公式文書urllibhttps://docs.python.org/zh-cn/3.7/library/urllib.html
1.urllib——処理URL
urllib
URLを使ったモジュールを複数集めたパッケージでpython標準ライブラリの一員urllib.request
URLを開いて読み取るurllib.error
含むurllib.request
投げ出す異常urllib.parse
URL解析用urllib.robotparser
解析用robots.txt
ファイルurllib.request
モジュールは、基本認証、要約認証、リダイレクト、cookies、その他、様々な複雑な状況でURL(主にHTTP)を開くのに適した関数およびクラスを定義する.1.1.1関数
urllib.request.urlopen(url,...)
urlで指定するリソースを開く、urlは文字列でもurllibでもよい.request.Requestオブジェクト、httpを返します.client.responseオブジェクトurllib.request.``build_opener([handler, ...])
OpenerDirectorエンティティを1つ返す1.1.2.クラス#クラス#
class urllib.request.Request(url, data=None, headers={}, origin_req_host=None, unverifiable=False, method=None)
このクラスはURLリクエストの抽象ですurllib.request.OpenerDirector
このクラスは接続されているBaseHandlers
urlを開く.handlersチェーンを管理し、エラーからリカバリします.OpenerDirectorインスタンスのopen(url, data=None[, timeout])
メソッドは、urlを開きます.その戻り値と発生した異常とurllib.request.urlopen()と同じです.urllib.request.ProxyHandler
(proxies=None)エージェントからのリクエストでproxiesパラメータが与えられる場合は辞書(プロトコルからIPマッピングまでの辞書)urllib.parse.urlencode(query,...)
・mapping object
またはstrまたはbytesオブジェクトを含む二元グループのシーケンスをパーセンテージ符号化されたASCIIテキスト文字列に変換する.1.3. 例
最も簡単な例です
# -*- coding:utf-8 -*-
from urllib import request
url = "http://www.baidu.com"
# url , http.client.http.client.HTTPResponse
resp = request.urlopen(url)
#read()
r_content = resp.read()
#
r_text = r_content.decode("utf-8")
print(r_text)
一部のサイトでは、リクエストヘッドを通じて、反爬虫類の制限が行われる可能性があります.したがって、次の例では、Resquestオブジェクトにheadersを設定できます.
# -*- coding:utf-8 -*-
# urllib URL , python
from urllib import request
import urllib.response
url = "https://tieba.baidu.com/f"
header = {
"User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.116 Safari/537.36",
}
resp = request.urlopen(request.Request(url, headers=header)) # url , url urllib.request.Request , http.client.HTTPResponse
r_content = resp.read() # , bytes
r_text = r_content.decode("utf-8") # utf-8
print(type(resp)) # resp
print(resp.version) # http
print(resp.status) #
print(resp.url) # url
print(resp.headers) #
print(r_text) #
中国語リクエストパラメータ付きurlにはurllibが必要です.parseテンプレート
# -*- coding:utf-8 -*-
# urllib URL , python
from urllib import request
from urllib import parse
url = "https://tieba.baidu.com/f"
data = {
"kw":" "
}
data_string = parse.urlencode(data)
new_url = url+"?"+data_string
resp = request.urlopen(new_url)
text_content = resp.read().decode("utf-8")
with open("tieba.html", "w", encoding="utf-8") as fp:
fp.write(text_content)s
エージェントはエージェントの設定を説明する文章を設定します
from urllib import request
url = "https://www.runoob.com/w3cnote/python-pip-install-usage.html"
header = {
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36 Edge/17.17134'
}
req = request.Request(url, headers=header)
# , ( , IP )
Ip = request.ProxyHandler({
'http':'118.187.58.34:53281',
})
# OpenerDirector
opener = request.build_opener(Ip,request.HTTPHandler)
# url, urllib.request.urlopen()
resp = opener.open(req)
text = resp.read().decode('utf-8')
print(text[:500])
リファレンス