盤點Python中urllib函式庫和requests函式庫區別

發布: 2023-07-25 15:16:50
轉載
1726 人瀏覽過

一、前言

在使用Python爬蟲時,需要模擬發起網路請求,主要用到的函式庫有requests函式庫和python內置的urllib函式庫,一般建議使用requests,它是對urllib的再次封裝。

那它們兩者有什麼區別 ?

下面透過案例詳細的講解 ,了解他們使用的主要區別。

二、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)
登入後複製

執行結果:

盤點Python中urllib函式庫和requests函式庫區別

#注意:

通常會爬取網頁,在建構http請求的時候,都需要加上一些額外信息,什麼Useragent,cookie等之類的信息,或者添加代理伺服器。往往這些都是一些必要的反爬機制。


####################################################################################################

三、requests库

简介requests库调用是requests.get方法传入url和参数,返回的对象是Response对象,打印出来是显示响应状态码。

通过.text 方法可以返回是unicode 型的数据,一般是在网页的header中定义的编码形式,而content返回的是bytes,二级制型的数据,还有 .json方法也可以返回json字符串。

如果想要提取文本就用text,但是如果你想要提取图片、文件等二进制文件,就要用content,当然decode之后,中文字符也会正常显示。

requests的优势: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函式庫區別


四、总结

1. 本文基于Python基础,主要介绍了urllib库和requests库的区别。

2. 在使用urllib内的request模块时,返回体获取有效信息和请求体的拼接需要decode和encode后再进行装载。进行http请求时需先构造get或者post请求再进行调用,header等头文件也需先进行构造。

3. requests是对urllib的进一步封装,因此在使用上显得更加的便捷,建议在实际应用当中尽量使用requests。

4. 希望能给一些对爬虫感兴趣,有一个具体的概念。方法只是一种工具,试着去爬一爬会更容易上手,网络也会有很多的坑,做爬虫更需要大量的经验来应付复杂的网络情况。

5. 希望大家一起探讨学习, 一起进步。

以上是盤點Python中urllib函式庫和requests函式庫區別的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:Go语言进阶学习
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!