ホームページ  >  記事  >  バックエンド開発  >  Python urllib モジュール urlopen() と urlretrieve() の詳細な説明

Python urllib モジュール urlopen() と urlretrieve() の詳細な説明

WBOY
WBOYオリジナル
2016-06-16 08:46:261258ブラウズ

1.urlopen() メソッド
urllib.urlopen(url[, data[, proxies]]): リモート URL を表すファイルのようなオブジェクトを作成し、これを次のように操作します。ローカル ファイル リモート データを取得するためのファイルのようなオブジェクト。
パラメータ url は、リモート データのパス (通常は URL) を表します。
パラメータ データは、post メソッドで URL に送信されるデータを表します (Web を使ったことがある人は、データを送信する 2 つの方法を知っているはずです)。 : post と get の場合。 分からない場合でも、このパラメータは通常の状況ではほとんど使用されません);
パラメータ proxies はプロキシを設定するために使用されます。
urlopen は、次のメソッドを提供するファイルのようなオブジェクトを返します:
read()、readline()、readlines()、fileno()、close(): これらのメソッドは file とまったく同じように使用できます。オブジェクト;
info(): リモート サーバーから返されたヘッダー情報を表す httplib.HTTPMessage オブジェクトを返します。
getcode(): Http ステータス コードを返します。 http リクエストの場合、200 はリクエストが正常に完了したことを意味し、404 は URL が見つからなかったことを意味します。
コード例:

コードをコピー コードは次のとおりです:
import urllib
url = "http://www.baidu.com/"

#urlopen()

sock = urllib.urlopen(url)
htmlCode = sock.read()
sock.close
fp = open("e:/1.html", "wb")
fp.write(htmlCode)
fp.close

#urlretrieve()

urllib.urlretrieve(url, 'e:/2.html')

2.urlretrieve メソッド
リモート データをローカルに直接ダウンロードします。

コードをコピー コードは次のとおりです:
urllib.urlretrieve(url[, filename[, reporthook[, data] ]])
パラメータの説明:
url: 外部またはローカル URL
filename: ローカルに保存するパスを指定します (このパラメータが指定されていない場合、urllib はデータを保存するための一時ファイルを生成します) ;
reporthook: サーバーが接続され、対応するデータ ブロックが転送されるときにトリガーされるコールバック関数です。このコールバック関数を使用して、現在のダウンロードの進行状況を表示できます。
データ: サーバーに投稿されたデータを指します。このメソッドは 2 つの要素 (ファイル名、ヘッダー) を含むタプルを返します。ファイル名はローカルに保存されたパスを表し、ヘッダーはサーバーの応答ヘッダーを表します。

次の例では、Sina ホームページの HTML をローカルでキャプチャし、D:/sina.html ファイルに保存し、ダウンロードの進行状況を表示します。同じ時間です。

コードをコピーします コードは次のとおりです:
import urllib
def callbackfunc(blocknum, blocksize, totalsize):
''コールバック関数
@blocknum: ダウンロードされたデータ ブロック
@blocksize: データ ブロックのサイズ
@totalsize: リモート ファイルのサイズ
'''
パーセント = 100.0 * ブロック番号 * ブロックサイズ / 合計サイズ
if パーセント > 100:
パーセント = 100
print "%.2f%%"% パーセント
url = 'http://www.sina.com.cn'

local = 'd:\sina.html'
urllib.urlretrieve(url, local, callbackfunc)


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。