7. 网络爬虫基础使用
优质
小牛编辑
140浏览
2023-12-01
urllib介绍:
- 在Python2版本中,有urllib和urlib2两个库可以用来实现request的发送。
- 而在Python3中,已经不存在urllib2这个库了,统一为urllib。
- Python3 urllib库官方链接:https://docs.python.org/3/library/urllib.html
- urllib中包括了四个模块,包括:
- urllib.request:可以用来发送request和获取request的结果
- urllib.error:包含了urllib.request产生的异常
- urllib.parse:用来解析和处理URL
- urllib.robotparse:用来解析页面的robots.txt文件
urllib.request:
urllib.request 模块提供了最基本的构造 HTTP 请求方法,可以模拟浏览器的一个请求发起过程。同时它还带有处理authenticaton(授权验证),redirections(重定向),cookies(浏览器Cookies)以及其它内容。
urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, capath=None, cadefault=False, context=None)
参数:url地址
- data:可选附加参数,字节流编码格式(bytes() 可转换),请求方式会变为POST
- timeout (超时时间)单位为秒,若请求超出了设置时间还没有响应,则抛异常
- 返回HTTPResposne类型的对象:
- response.read() 就可以得到返回的网页内容,可使用decode("utf-8")解码字符串
- response.status 就可以得到返回结果的状态码,如200代表请求成功,404代表网页未找到
3. urllib.request.Request:
- 利用urlopen()方法可以实现最基本的请求发起,但这几个简单的参数并不足以构建一个完整的请求。
- 使用强大的Request类可以在请求中加入需要的headers等信息。
class urllib.request.Request(url, data=None, headers={}, origin_req_host=None,
unverifiable=False, method=None)
第一个参数是请求链接,这个是必传参数,其他的都是可选参数
data 参数如果要传必须传 bytes (字节流)类型的,如果是一个字典,可以先用 urllib.parse.urlencode() 编码。
headers 参数是一个字典,你可以在构造 Request 时通过 headers 参数传递,也可以通过调用 Request 对象的 add_header() 方法来添加请求头。
origin_req_host 指的是请求方的 host 名称或者 IP 地址。
unverifiable 指的是这个请求是否是无法验证的,默认是 False 。意思就是说用户没有足够权限来选择接收这个请求的结果
method 是一个字符串,它用来指示请求使用的方法,比如 GET , POST , PUT 等等。