「来源: |<em>Python</em>爬虫与数据挖掘 ID:crawler_<em>python</em>」回复“书籍”即可获赠<em>Python</em>从入门到进阶共10本电子书 今 日 鸡 汤 只愿君心似我心,定不负相思意。一、前言 在使用<em>Python</em>爬虫
2021-05-20 12:30:26
「來源: |Python爬蟲與資料探勘 ID:crawler_python」
回覆「書籍」即可獲贈Python從入門到進階共10本電子書
今
日
雞
湯
只願君心似我心,定不負相思意。
一、前言
在使用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)
運行結果:
注意:
通常爬取網頁,在構造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 requestsheaders = {"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.textdata2 = response.contentprint(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。希望能給一些對爬蟲感興趣,有一個具體的概念。方法只是一種工具,試著去爬一爬會更容易上手,網路也會有很多的坑,做爬蟲更需要大量的經驗來應付複雜的網路情況。希望大家一起探討學習, 一起進步。------------------- End -------------------
相關文章
「来源: |<em>Python</em>爬虫与数据挖掘 ID:crawler_<em>python</em>」回复“书籍”即可获赠<em>Python</em>从入门到进阶共10本电子书 今 日 鸡 汤 只愿君心似我心,定不负相思意。一、前言 在使用<em>Python</em>爬虫
2021-05-20 12:30:26
2.计算平均值 随后我们使用AVERAGEIF函数计算下部门的平均值,公式为:=AVERAGEIF($A$2:$A$19,A2,$C$2:$C$19),如果你的<em>Excel</em>没有这个函数,可以利用sumif与countif分别算出部门的总销量与人数再除一下也是可以的
2021-05-20 12:30:16
对于客户的管理,也从以前非常简单的<em>Excel</em>表格管理,到现在的数字化CRM管理。 在小满科技陪伴我们外贸人走过的八周年中,帮助无数的外贸企业,在数字化营销以及提升外贸行业整个的效率发挥了积极的作用,我在这
2021-05-20 12:30:04
与有线耳机不同,蓝牙耳机没了电就成了摆设,因此续航对于蓝牙耳机来说十分重要。而vivo TWS 2在续航方面的表现十分出色,得益于超大容量的电池、<em>高通</em>高能效比芯片以及优秀的电源管理,这款耳机充满电之后,在降噪模
2021-05-20 12:01:23
据透露,小米平板5标准版将会搭载联发科天玑1200芯片,搭载LCD材质2K分辨率屏幕,刷新率高达144HZ,而小米平板 5Pro则会搭载<em>高通</em>骁龙870处理器,搭载OLED材质2K分辨率屏幕,刷新率为120Hz,两款小米平板5的屏幕尺寸均为11
2021-05-20 12:01:17
追求极致性能的朋友不建议选择这款手机,建议选择更高的iqoo neo5或其他<em>高通</em>骁龙8系处理器的手机。与同价位的其他手机相比,iqooz3性能不是最顶尖的。隔壁家的realme q3pro使用天玑1100处理器,性能要明显强于
2021-05-20 12:01:11