urllib.request模块提供了最基本的构造HTTP请求的方法。利用它可以模拟浏览器的一个请求发起过程。
以爬取Python官网为例:
import urllib.request
response = urllib.request.urlopen("https://www.python.org/")
html = response.read().decode('utf-8')
print(html)
运行结果如图:
我们用这几行代码就得到了想要抓取网页的源代码,之后,我们想要的链接、图片地址、文本信息就都可以提取出来了。
我们得到的响应类型是HTTPResponse,主要包含read()、readinto()、getheader(name)、getheaders()、fileno()等方法,以及msg、version、status、reason、debuglevel、closed**等属性。
得到这个对象后,把它赋值给response变量,然后就可以调用这些方法和属性,得到返回结果的一系列信息了。
实例:
import urllib.request
response = urllib.request.urlopen("https://www.python.org/")
print(response.status)
print(response.getheaders())
print(response.getheader('Server'))
输出结果:
200
[('Connection', 'close'), ('Content-Length', '49846'), ('Server', 'nginx'),
('Content-Type', 'text/html; charset=utf-8'), ('X-Frame-Options', 'DENY'),
('Via', '1.1 vegur, 1.1 varnish, 1.1 varnish'), ('Accept-Ranges', 'bytes'),
('Date', 'Tue, 13 Apr 2021 02:57:03 GMT'), ('Age', '83'),
('X-Served-By', 'cache-bwi5183-BWI, cache-hkg17933-HKG'),
('X-Cache', 'HIT, HIT'), ('X-Cache-Hits', '4, 196'),
('X-Timer', 'S1618282623.321738,VS0,VE0'), ('Vary', 'Cookie'),
('Strict-Transport-Security', 'max-age=63072000; includeSubDomains')]
nginx
可见,前两个输出了response的状态码和响应的头部信息,最后一个通过调用了getheader