Python3.x 网络爬虫之 request.Request 类,反反爬虫

【纯个人手打,替老师传道,不求多大成就但愿 能帮到大家,在闲暇的时间里为大家共享一些工作经验和各种技术资源文章,希望帮助大家共同进步 也希望我的发布对你有所帮助,我的发布里有更多类似的文章可以查阅,喜欢的请点关注,谢谢。你们的关注是我不停发布的最大动力,在我发布里好多类似这样的文章,请尽情阅览】

"""

request.Request 类 :他是 urllib 库的 request 模块下的一个功能,不需要单独安装,是 python3 自带的

request.Request 类的作用:在请求 URL 的时候添加一些信息,比如说,我们在使用

response = request.urlopen("http://www.baidu.com") 去直接请求的

但是时候有些 URL 是带有反爬虫机制的,这时我们怎么办呢?就是要借助这个 request.Request 来传递更多的信息

来模拟浏览器,绕过反爬虫机制 备注:代码可以直接粘贴使用

"""

# 1、导入需要用到的相关库

from urllib import request

from urllib import parse

# 2、定义请求目标的 URL

url = "https://www.lagou.com/jobs/positionAjax.json?city=%E5%8C%97%E4%BA%AC&needAddtionalResult="

# 3、定义 headers 信息,这个信息就是要用来在请求 URL 时传递进去的数据。我们先把它准备好

headers = {

"User-Agent" :"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"

" (KHTML, like Gecko) Chrome/70.0.3538.67 Safari/537.36",

"Referer" :"https://www.lagou.com/jobs/list_python? labelWords=&fromSearch=true&suginput="

}

# 4、定义 data 数据,这个也是一会儿请求 URL 时需要用到的,先给它也准备好

# 我们定义 headers 和 data 这两个信息的作用就是反反爬虫机制用的,你知道就好了

# 这个 data 信息不一定必须要,看你的请求是 post 还是 get 的

data = {

"first": "true",

"pn": "1",

"kd": "python"

}

# 5、使用 request.Request 类创建一个 req 对象,这样我们就将上面的信息都整合到一起了,下面可以开始请求了

# req = request.Request(url, headers=headers) # 如果是get请求则用这个

# 5.5、如果发送 post 请求时用这个;你看,区别就在于这里多传了 data 和 method

# 可是,这里如果直接传入 data 数据的话是无法识别的,得需要先将让它进行重新编码成规范的格式

# data=parse.urlencode(data) 这样编码完后呢是 unicode 字符串,但是在请求的时候是需要 bytes 类型的

# 所以还要使用 .encode("utf-8") 再转换成 bytes 数据类型才可以

req = request.Request(url, headers=headers, data=parse.urlencode(data).encode("utf-8"), method="POST")

# 6、使用 request.urlopen 函数,去请求上面我们准备好的对象,因为这个 req 对象里都包含了上面的信息了嘛

response = request.urlopen(req)

# 7、最后打印请求结果:因为上面的 request.urlopen(req) 请求最终返回结果都给了 response ,所以这里打印它

# 打印的时候我们使用 decode 函数转码成 utf-8 格式,好方便我们查看

print(response.read().decode("utf-8"))

Python3.x 网络爬虫之 request.Request 类,反反爬虫

图片是直接从我电脑截图的,如果模糊请多包涵

Python3.x 网络爬虫之 request.Request 类,反反爬虫

图片是直接从我电脑截图的,如果模糊请多包涵


分享到:


相關文章: