Python-数据挖掘-搜索引擎
urllib 库是 Python 内置的 HTTP 请求库,它可以看作处理 URL 的组件集合。
一、urllib 库包含四大模块:
① urllib.request:请求模块
② urllib.error:异常处理模块
③ urllib.parse:URL 解析模块
④ urllib.robotparser:robots.txt 解析模块
使用 urllib 快速爬取一个网页:
import urllib.request
# 调用 urllib.request 库的 urlopen() 方法,并传入一个 url
response = urllib.request.urlopen("http://www.baidu.com")
# 使用 read() 方法读取获取到的网页内容
html = response.read().decode("UTF-8")
# 打印网页内容
print(html)
二、分析 urlopen() 方法
上一个例子中的核心爬虫代码:
response = urllib.request.urlopen("http://www.baidu.com")
该代码调用的是 urllib.request 模块中的 urlopen() 方法,它传入了一个百度首页的 URL,使用的协议是 HTTP,,这是 urlopen() 方法最简单的用法。
其实,urlopen() 方法可以接受多个参数
urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, capath=None, cadefault=False, context=None)
① url:表示目标资源在网站中的位置,可以是一个表示 URL 地址的字符串,也可以是一个 urllib.request 对象。
② data:用来指明向服务器发送请求的额外信息。
③ timeout:可选参数,该参数用于设置超时时间,单位是秒。
④ cafile/capath/cadefault:用于实现可信任的 CA 证书的 HTTPS 请求。
⑤ context:实现 SSL 加密传输。
三、使用 HTTPResponse 对象
使用 urllib.request 模块中的 urlopen() 方法发送 HTTP 请求后,服务器返回的响应内容封装在一个 HTTPResponse 类型的对象中。
import urllib.request
# 调用 urllib.request 库的 urlopen() 方法,并传入一个 url
response = urllib.request.urlopen("http://www.baidu.com")
print(type(response))
HTTPResponse 类属于 http.client 模块,该类提供了获取 URL、状态码、响应内容等一系列方法。
① geturl():用于获取响应内容的 URL,该方法可以验证发送的 HTTP 请求是否被重新调配。
② info():返回页面的元信息。
③ getcode():返回 HTTP 请求的响应状态码。
import urllib.request
response = urllib.request.urlopen("http://www.baidu.com")
# 获取响应信息对应的 URL
print(response.geturl())
# 获取响应码
print(response.getcode())
# 获取页面的元信息
print(response.info())