Urllibモジュールを使用してライブWebからデータを取得しようとしているので、簡単な例を作成しました
ここに私のコードがあります:
import urllib
sock = urllib.request.urlopen("http://diveintopython.org/")
htmlSource = sock.read()
sock.close()
print (htmlSource)
しかし、私は次のようなエラーが発生しました:
Traceback (most recent call last):
File "D:\test.py", line 3, in <module>
sock = urllib.request.urlopen("http://diveintopython.org/")
AttributeError: 'module' object has no attribute 'request'
間違ったドキュメントまたは間違ったPythonインタープリターバージョンを読んでいます。 Python 2のPython 3ライブラリを使用しようとしました。
使用する:
import urllib2
sock = urllib2.urlopen("http://diveintopython.org/")
htmlSource = sock.read()
sock.close()
print htmlSource
Python 2 urllib2
library は、Python 3で urllib.request
に置き換えられました。
import requests
import urllib
link = "http://www.somesite.com/details.pl?urn=2344"
f = urllib.request.urlopen(link)
myfile = f.read()
writeFileObj = open('output.xml', 'wb')
writeFileObj.write(myfile)
writeFileObj.close()
これは私がURLからデータを取得するために使用するものです、必要な場合は同時にファイルを保存できるので、そのニース:
import urllib
result = urllib.urlretrieve("http://diveintopython.org/")
print open(result[0]).read()
出力:
'<!DOCTYPE html><body style="padding:0; margin:0;"><iframe src="http://mcc.godaddy.com/park/pKMcpaMuM2WwoTq1LzRhLzI0" style="visibility: visible;height: 2000px;" allowtransparency="true" marginheight="0" marginwidth="0" frameborder="0" scrolling="no" width="100%"></iframe></body></html>'
編集:urlretrieveはpython 2および3で動作します
Python3では、urllibまたはurllib3
urllib:
import urllib.request
with urllib.request.urlopen('http://docs.python.org') as response:
htmlSource = response.read()
urllib3:
import urllib3
http = urllib3.PoolManager()
r = http.request('GET', 'http://docs.python.org')
htmlSource = r.data
requests
からurllib
をインポートしてから、この形式を試してください。
from urllib import request
urllib.request.urlopen( )