Answers:
编辑09/2016:在Python 3及更高版本中,使用urllib.request而不是urllib2
实际上,最简单的方法是:
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
正如Will所建议的,您甚至不需要“ 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中的第二个示例:
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 3中的另一种方法是使用urllib3包。
import urllib3
http = urllib3.PoolManager()
response = http.request('GET', target_url)
data = response.data.decode('utf-8')
这可能比urllib更好,因为urllib3拥有
- 线程安全。
- 连接池。
- 客户端SSL / TLS验证。
- 使用分段编码上传文件。
- 重试请求和处理HTTP重定向的助手。
- 支持gzip和deflate编码。
- HTTP和SOCKS的代理支持。
- 100%的测试覆盖率。