urllib パッケージを使ってインターネット上のリソースを取得できます。
urllib.request
urllib.request は URLs (Uniform Resource Locators) を取得するための Python モジュールです。
URL を取得する
urlopen 関数を使って取得します。
サイト「http://r-force.x0.com/web/」のソースを表示させます。
import urllib.request
response = urllib.request.urlopen('http://r-force.x0.com/web/')
html = response.read()
print(html)
取得したソースの保存
ソースを取得し、それを一時的な場所に保存しておきたいときは、urlretrieve() 関数を使って行うことができます。
取得したソースを指定したディレクトリにhtmlファイルで保存します。
#ソースを取得するサイト
url = "http://r-force.x0.com/web/"
#データを保存するディレクトリ
path = "C:/sam/"
#ファイル名を指定してデータを保存
urllib.request.urlretrieve(url, path + "mysite.html")
urllib.parse
このモジュールでは URL 文字列をその構成要素 (アドレススキーム、ネットワーク上の位置、パスその他) に分解したり、構成要素を URL に組みなおしたり、相対 URL を指定した基底 URL (base URL) に基づいて絶対 URL に変換するための標準的なインタフェースを定義しています。
urllib.parse モジュールは、大きく分けると URL の解析を行う関数と URL のクオートを行う関数を定義しています。
urllib.parse.urlparse
URL を解析して 6 つの構成要素にし、6 要素のタプルを返します。
各タプル要素は文字列で、空の場合もあります。
from urllib.parse import urlparse
url = 'http://docs.python.jp/3.3/library/urllib.parse.html?highlight=urllib.parse#urllib.parse'
p = urlparse(url)
print(p)
print(p.scheme)
print(p.path)
print(p.geturl())
● 出力
ParseResult(scheme=’http’, netloc=’docs.python.jp’, path=’/3.3/library/urllib.parse.html’,
params=”, query=’highlight=urllib.parse’, fragment=’urllib.parse’)http/3.3/library/urllib.parse.htmlhttp://docs.python.jp/3.3/library/urllib.parse.html?highlight=urllib.parse#urllib.parse
urllib.parse.parse_qs
url 引数として渡されたクエリ文字列を解析します。
解析されたデータを辞書として返します。
辞書のキーは一意なクエリ変数名で、値は各変数名に対する値からなるリストです。
from urllib.parse import parse_qs
url = 'http://docs.python.jp/3.3/library/urllib.parse.html?highlight=urllib.parse&highlight2=urllib2'
p = parse_qs(url)
print(p)
● 出力
{‘http://docs.python.jp/3.3/library/urllib.parse.html?highlight’: [‘urllib.parse’],
‘highlight2’: [‘urllib2’]}
from urllib.parse import parse_qs
url = 'http://docs.python.jp/3.3/library/urllib.parse.html?highlight=urllib&highlight2=urllib2&highlight2=urllib3'
p = parse_qs(url)
print(p)
● 出力
{‘http://docs.python.jp/3.3/library/urllib.parse.html?highlight’: [‘urllib’],
‘highlight2’: [‘urllib2’, ‘urllib3’]}