欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

關(guān)于Python網(wǎng)絡(luò)爬蟲requests庫(kù)的介紹

 更新時(shí)間:2023年04月27日 10:54:29   作者:國(guó)家一級(jí)假勤奮大學(xué)生  
這篇文章主要介紹了關(guān)于Python網(wǎng)絡(luò)爬蟲requests庫(kù),而很多時(shí)候這些數(shù)據(jù)存儲(chǔ)在網(wǎng)頁(yè)中,手動(dòng)下載需要花費(fèi)的時(shí)間太長(zhǎng),這時(shí)候我們就需要網(wǎng)絡(luò)爬蟲幫助我們自動(dòng)爬取這些數(shù)據(jù),需要的朋友可以參考下

1. 什么是網(wǎng)絡(luò)爬蟲

簡(jiǎn)單來說,就是構(gòu)建一個(gè)程序,以自動(dòng)化的方式從網(wǎng)絡(luò)上下載、解析和組織數(shù)據(jù)。

就像我們?yōu)g覽網(wǎng)頁(yè)的時(shí)候,對(duì)于我們感興趣的內(nèi)容我們會(huì)復(fù)制粘貼到自己的筆記本中,方便下次閱讀瀏覽——網(wǎng)絡(luò)爬蟲幫我們自動(dòng)完成這些內(nèi)容

當(dāng)然如果遇到一些無法復(fù)制粘貼的網(wǎng)站——網(wǎng)絡(luò)爬蟲就更能顯示它的力量了

為什么需要網(wǎng)絡(luò)爬蟲

當(dāng)我們需要做一些數(shù)據(jù)分析的時(shí)候——而很多時(shí)候這些數(shù)據(jù)存儲(chǔ)在網(wǎng)頁(yè)中,手動(dòng)下載需要花費(fèi)的時(shí)間太長(zhǎng),這時(shí)候我們就需要網(wǎng)絡(luò)爬蟲幫助我們自動(dòng)爬取這些數(shù)據(jù)來(當(dāng)然我們會(huì)過濾掉網(wǎng)頁(yè)上那些沒用的東西)

網(wǎng)絡(luò)爬蟲的應(yīng)用

訪問和收集網(wǎng)絡(luò)數(shù)據(jù)有十分廣泛的應(yīng)用,其中很多屬于數(shù)據(jù)科學(xué)領(lǐng)域 我們來看看下面這些例子:

淘寶網(wǎng)的賣家需要從海量的評(píng)價(jià)中尋找到有用的正面的和反面的信息,來幫助他進(jìn)一步抓住顧客的心,分析顧客的購(gòu)物心理有學(xué)者在twitter、微博等社交媒體上爬取信息來構(gòu)建一個(gè)數(shù)據(jù)集,從而建立一個(gè)識(shí)別抑郁癥和自殺念頭的預(yù)測(cè)模型——讓更多需要援助的人得到幫助——當(dāng)然我們也需要考慮到隱私相關(guān)的問題——但這很酷不是嗎?

作為一名人工智能工程師,他們從Ins上爬取志愿者所展示的喜好的圖片,來訓(xùn)練深度學(xué)習(xí)模型,從而預(yù)測(cè)給出的圖像是否會(huì)被志愿者所喜好——手機(jī)制造商將這些模型納入他們的圖片應(yīng)用程序中,推送給你。電商平臺(tái)的數(shù)據(jù)科學(xué)家爬取用戶瀏覽商品的信息,進(jìn)行分析和預(yù)測(cè),以便推送給用戶他最想要了解和購(gòu)買的商品

是的!網(wǎng)絡(luò)爬蟲的應(yīng)用十分廣泛,小到我們?nèi)粘S脕砼颗廊∫恍└咔宓谋诩?,圖片;大到人工智能、深度學(xué)習(xí)、商業(yè)策略制定的數(shù)據(jù)來源等。

這個(gè)時(shí)代是數(shù)據(jù)的時(shí)代,數(shù)據(jù)就是“新石油”

2. 網(wǎng)絡(luò)傳輸協(xié)議HTTP

沒錯(cuò),講到網(wǎng)絡(luò)爬蟲一定繞不開的就是這個(gè)HTTP,當(dāng)然我們不需要像網(wǎng)絡(luò)工程師那樣詳細(xì)的了解協(xié)議定義的方方面面,但是作為入門我們還是得具有一定的認(rèn)識(shí)才行

國(guó)際標(biāo)準(zhǔn)化組織ISO維護(hù)了開放式通信系統(tǒng)互聯(lián)參考模型OSI,而該模型將計(jì)算機(jī)通信結(jié)構(gòu)分為七層

  1. 物理層:包括以太網(wǎng)協(xié)議、USB協(xié)議、藍(lán)牙協(xié)議等
  2. 數(shù)據(jù)鏈路層:包含以太網(wǎng)協(xié)議
  3. 網(wǎng)絡(luò)層:包含IP協(xié)議
  4. 傳輸層:包含TCP、UDP協(xié)議
  5. 會(huì)話層:包含用于打開/關(guān)閉和管理會(huì)話的協(xié)議
  6. 表示層:包含保護(hù)格式還和翻譯數(shù)據(jù)的協(xié)議
  7. 應(yīng)用層:包含HTTP和DNS網(wǎng)絡(luò)服務(wù)協(xié)議

現(xiàn)在來看看HTTP請(qǐng)求和響應(yīng)是什么樣子的(因?yàn)楹竺鏁?huì)涉及自定義請(qǐng)求頭) 一般請(qǐng)求消息由一下內(nèi)容構(gòu)成:

  • 請(qǐng)求行
  • 多個(gè)請(qǐng)求頭
  • 空行
  • 可選的消息主體

具體的請(qǐng)求消息:

GET https://www.baidu.com/?tn=80035161_1_dg HTTP/1.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-Hans-CN,zh-Hans;q=0.8,en-GB;q=0.5,en;q=0.3
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 Edge/18.18362
Accept-Encoding: gzip, deflate, br
Host: www.baidu.com
Connection: Keep-Alive

這個(gè)是訪問百度時(shí)的請(qǐng)求,當(dāng)然里面的很多細(xì)節(jié)我們也不需要知道,因?yàn)閜ython的request包會(huì)幫助我們完成我們的爬取

當(dāng)然我們也能查看網(wǎng)頁(yè)對(duì)我們的請(qǐng)求返回的信息:

HTTP/1.1 200 OK //這邊的狀態(tài)碼為200表示我們的請(qǐng)求成功
Bdpagetype: 2
Cache-Control: private
Connection: keep-alive
Content-Encoding: gzip
Content-Type: text/html;charset=utf-8
Date: Sun, 09 Aug 2020 02:57:00 GMT
Expires: Sun, 09 Aug 2020 02:56:59 GMT
X-Ua-Compatible: IE=Edge,chrome=1
Transfer-Encoding: chunked

3. requests庫(kù)(不喜歡理論知識(shí)的同學(xué)們可以直接來這里哦)

我們知道其實(shí)python還預(yù)置了另外的處理HTTP的庫(kù)——urllib和urllib3,但是requests庫(kù)學(xué)起來更容易——代碼更簡(jiǎn)潔易懂。 當(dāng)然當(dāng)我們成功爬取下網(wǎng)頁(yè)時(shí),將要將里面我們感興趣的東西提取出來的時(shí)候, 我們會(huì)提到另一個(gè)十分有用的庫(kù)——美麗湯(Beautiful Soup)——這又是后話了

1. requests庫(kù)的安裝

這里我們可以直接找到requests的.whl文件安裝,也可以直接使用pip來安裝(當(dāng)然如果有pycharm的同學(xué)可以直接從里面的環(huán)境加載中下載)

2. 實(shí)戰(zhàn)

下面我們開始正式爬取網(wǎng)頁(yè)

代碼如下:

import requests
target = 'https://www.baidu.com/'
get_url = requests.get(url=target)
print(get_url.status_code)
print(get_url.text)

輸出結(jié)果

200 //返回狀態(tài)碼200表示請(qǐng)求成功
<!DOCTYPE html>//這里刪除了很多內(nèi)容,實(shí)際上輸出的網(wǎng)頁(yè)信息比這要多得多
<!--STATUS OK--><html> <head><meta http-equiv=content-type content=text/html;
charset=utf-8><meta http-equiv=X-UA-Compatible content=IE=Edge>
<meta content=always name=referrer>
<link rel=stylesheet type=text/css 
src=//www.baidu.com/img/gs.gif> 
</p> </div> </div> </div> </body> </html>

上面五行代碼做了很多事情,我們已經(jīng)可以將網(wǎng)頁(yè)的HTML內(nèi)容全部抓取

第一行代碼:加載requests庫(kù) 第二行代碼:給出需要爬取的網(wǎng)站 第三行代碼:使用requests進(jìn)行請(qǐng)求 一般的格式如下:

對(duì)象 = requests.get(url=你想要爬取的網(wǎng)站地址)

第四行代碼:返回請(qǐng)求的狀態(tài)碼 第五行代碼:輸出相應(yīng)的內(nèi)容主體

當(dāng)然我們還可以打印更多的內(nèi)容

import requests

target = 'https://www.baidu.com/'
get_url = requests.get(url=target)
# print(get_url.status_code)
# print(get_url.text)
print(get_url.reason)//返回狀態(tài)
print(get_url.headers)
//返回HTTP響應(yīng)中包含的服務(wù)器頭的內(nèi)容(和上面展示的內(nèi)容差不多)
print(get_url.request)
print(get_url.request.headers)//返回請(qǐng)求中頭的內(nèi)容
OK
{'Cache-Control': 'private, no-cache, no-store, proxy-revalidate, no-transform', 
'Connection': 'keep-alive', 
'Content-Encoding': 'gzip', 
'Content-Type': 'text/html', 
'Date': 'Sun, 09 Aug 2020 04:14:22 GMT',
'Last-Modified': 'Mon, 23 Jan 2017 13:23:55 GMT', 
'Pragma': 'no-cache', 
'Server': 'bfe/1.0.8.18', 
'Set-Cookie': 'BDORZ=27315; max-age=86400; domain=.baidu.com; path=/', 'Transfer-Encoding': 'chunked'}
<PreparedRequest [GET]>
{'User-Agent': 'python-requests/2.22.0', 
'Accept-Encoding': 'gzip, deflate', 
'Accept': '*/*', 
'Connection': 'keep-alive'}

基本的網(wǎng)頁(yè)抓取就完成了,但是如果我們想要解析我們抓取的HTML格式的網(wǎng)頁(yè)呢,我們還需要學(xué)習(xí)正則表達(dá)式、Beautiful Soup庫(kù)的應(yīng)用,這些我們下個(gè)博客再講解吧

到此這篇關(guān)于關(guān)于Python網(wǎng)絡(luò)爬蟲requests庫(kù)的介紹的文章就介紹到這了,更多相關(guān)Python網(wǎng)絡(luò)爬蟲requests庫(kù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論