回答:
編集09/2016:Python 3 以降では、urllib2の代わりにurllib.requestを使用します
実際、最も簡単な方法は次のとおりです。
import urllib2 # the lib that handles the url stuff
data = urllib2.urlopen(target_url) # it's a file like object and works just like a file
for line in data: # files are iterable
print line
ウィルが提案したように、「readlines」さえも必要としません。あなたも、それを短縮することができます: *
import urllib2
for line in urllib2.urlopen(target_url):
print line
ただし、Pythonでは読みやすさが重要であることを覚えておいてください。
ただし、これは最も簡単な方法ですが、安全な方法ではありません。ほとんどの場合、ネットワークプログラミングでは、予想されるデータ量が尊重されるかどうかがわからないためです。そのため、一般的には、固定された妥当な量のデータを読み取る方がよいでしょう。これは、期待するデータには十分であることがわかっていますが、スクリプトが溢れるのを防ぎます。
import urllib2
data = urllib2.urlopen("http://www.google.com").read(20000) # read only 20 000 chars
data = data.split("\n") # then split it into lines
for line in data:
print line
* Python 3の2番目の例:
import urllib.request # the lib that handles the url stuff
for line in urllib.request.urlopen(target_url):
print(line.decode('utf-8')) #utf-8 or iso8859-1 or whatever the page encoding scheme is
行ごとに読む必要は本当にありません。次のようにすべてを取得できます。
import urllib
txt = urllib.urlopen(target_url).read()
リクエスト・ライブラリは、シンプルなインターフェースを持っているとPython 2と3の両方で動作します。
import requests
response = requests.get(target_url)
data = response.text
Python 3のもう1つの方法は、urllib3パッケージを使用することです。
import urllib3
http = urllib3.PoolManager()
response = http.request('GET', target_url)
data = response.data.decode('utf-8')
これはurllib3が持っていることを誇っているので、urllibよりも良いオプションであるかもしれません
- スレッドセーフ。
- 接続プーリング。
- クライアント側のSSL / TLS検証。
- マルチパートエンコーディングによるファイルのアップロード。
- リクエストを再試行し、HTTPリダイレクトを処理するためのヘルパー。
- gzipおよびdeflateエンコーディングのサポート。
- HTTPおよびSOCKSのプロキシサポート。
- 100%テストカバレッジ。