请求对象的定制
下面我们来一起学习一下urllib中请求对象的定制。
1.UA介绍
UA(user agent)中文名为用户代理,它是一个特殊字符串头,使得服务器能够识别客户使用的操作系统及版本,cpu类型,浏览器及版本,浏览器内核,浏览器渲染引擎,浏览器语言,浏览器插件等。
#关于如何在浏览器中找到UA。详见下图!
2.urllib.request.Request
urlopen()方法可以实现最基本的请求的发起,但如果要加入Headers等信息,就可以利用Request类来构造请求。
语法如下:注意:因为参数顺序的问题,不能直接写url,headers,中间还有data,若直接写入,则headers的值默认传给data,所以我们需要用到关键字传参!
下面我们来看实例(读取百度首页的网页源码):
import urllib.request url = 'https://www.baidu.com' # url的组成 eg:https://www.baidu.com/s?wd=易烊千玺 # 1.协议(http/https) 2.主机(www.baidu.com) 3.端口号(80/443) 4.路径(s) 5.参数(wd=易烊千玺) 6.锚点 # 常见的端口号 # http(80) https(443) mysql(3306) oracle(1521) redis(6379) mongodb(27017) headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36' } # 因为参数顺序的问题,不能直接写url,headers,中间还有data,若直接写入,则headers的值默认传给data,所以我们需要用到关键字传参! request = urllib.request.Request(url = url,headers = headers) response = urllib.request.urlopen(request) content = response.read().decode('utf8') print(content) # 若不加入ua标识,则返回的数据只有一部分。因为存在反爬策略
运行结果:
以上就是python爬虫中请求对象的定制,也就是常说的反爬策略! 关注我,下期我们更新一些关于编码解码的问题!!