在使用Python爬虫时,需要模拟发起网络请求,主要用到的库有requests库和python内置的urllib库,一般建议使用requests,它是对urllib的再次封装。
那它们两者有什么区别 ?
下面通过案例详细的讲解 ,了解他们使用的主要区别。
urllib库的response对象是先创建http,request对象,装载到reques.urlopen里完成http请求。
返回的是http,response对象,实际上是html属性。使用.read().decode()解码后转化成了str字符串类型,decode解码后中文字符能够显示出来。
例
- from urllib import request
- #请求头
- headers = {
- "User-Agent": 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36'
- }
- wd = {"wd": "中国"}
- url = "http://www.baidu.com/s?"
- req = request.Request(url, headers=headers)
- response = request.urlopen(req)
- print(type(response))
- print(response)
- res = response.read().decode()
- print(type(res))
- print(res)
运行结果:
注意:
通常爬取网页,在构造http请求的时候,都需要加上一些额外信息,什么Useragent,cookie等之类的信息,或者添加代理服务器。往往这些都是一些必要的反爬机制。
requests库调用是requests.get方法传入url和参数,返回的对象是Response对象,打印出来是显示响应状态码。
通过.text 方法可以返回是unicode 型的数据,一般是在网页的header中定义的编码形式,而content返回的是bytes,二级制型的数据,还有 .json方法也可以返回json字符串。
如果想要提取文本就用text,但是如果你想要提取图片、文件等二进制文件,就要用content,当然decode之后,中文字符也会正常显示。
Python爬虫时,更建议用requests库。因为requests比urllib更为便捷,requests可以直接构造get,post请求并发起,而urllib.request只能先构造get,post请求,再发起。
例:
- import requests
- headers = {
- "User-Agent": "Mozilla/5.0 (Linux; U; Android 8.1.0; zh-cn; BLA-AL00 Build/HUAWEIBLA-AL00) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/57.0.2987.132 MQQBrowser/8.9 Mobile Safari/537.36"
- }
- wd = {"wd": "中国"}
- url = "http://www.baidu.com/s?"
- response = requests.get(url, params=wd, headers=headers)
- data = response.text
- data2 = response.content
- print(response)
- print(type(response))
- print(data)
- print(type(data))
- print(data2)
- print(type(data2))
- print(data2.decode())
- print(type(data2.decode()))
运行结果 (可以直接获取整网页的信息,打印控制台):
本文基于Python基础,主要介绍了urllib库和requests库的区别。
在使用urllib内的request模块时,返回体获取有效信息和请求体的拼接需要decode和encode后再进行装载。进行http请求时需先构造get或者post请求再进行调用,header等头文件也需先进行构造。
requests是对urllib的进一步封装,因此在使用上显得更加的便捷,建议在实际应用当中尽量使用requests。
希望能给一些对爬虫感兴趣,有一个具体的概念。方法只是一种工具,试着去爬一爬会更容易上手,网络也会有很多的坑,做爬虫更需要大量的经验来应付复杂的网络情况。
希望大家一起探讨学习, 一起进步。
文章题目:浅谈Python两大爬虫库—urllib库和requests库区别
文章路径:http://www.shufengxianlan.com/qtweb/news48/457148.html
成都网站建设公司_创新互联,为您提供微信公众号、品牌网站建设、建站公司、Google、商城网站、ChatGPT
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联