免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
Python學(xué)習(xí)教程:這里是Python爬蟲(chóng)的起點(diǎn),搶占資源啦

今天跟大家出的這篇文章,是從爬蟲(chóng)的起點(diǎn)開(kāi)始講起,這里的Python學(xué)習(xí)教程,一篇文章帶你貫穿爬蟲(chóng)始末!之前也夠跟大家出過(guò)相關(guān)的Python相關(guān)的Python學(xué)習(xí)教程,伙伴們也可以翻閱一下以前的!

爬蟲(chóng)系列文章的第一篇,這里便為大家講解了HTTP原理,很多人好奇:好好的講爬蟲(chóng)和HTTP有什么關(guān)系?其實(shí)我們常說(shuō)的爬蟲(chóng)(也叫網(wǎng)絡(luò)爬蟲(chóng))就是使用一些網(wǎng)絡(luò)協(xié)議發(fā)起的網(wǎng)絡(luò)請(qǐng)求,而目前使用最多的網(wǎng)絡(luò)協(xié)議便是HTTP/S網(wǎng)絡(luò)協(xié)議簇。

一、Python有哪些網(wǎng)絡(luò)庫(kù)

在真實(shí)瀏覽網(wǎng)頁(yè)我們是通過(guò)鼠標(biāo)點(diǎn)擊網(wǎng)頁(yè)然后由瀏覽器幫我們發(fā)起網(wǎng)絡(luò)請(qǐng)求,那在Python中我們又如何發(fā)起網(wǎng)絡(luò)請(qǐng)求的呢?答案當(dāng)然是庫(kù),具體哪些庫(kù)?豬哥給大家列一下:

  • Python2: httplib、httplib2、urllib、urllib2、urllib3、requests

  • Python3: httplib2、urllib、urllib3、requests

Python網(wǎng)絡(luò)請(qǐng)求庫(kù)有點(diǎn)多,而且還看見(jiàn)網(wǎng)上還都有用過(guò)的,那他們之間有何關(guān)系?又該如何選擇?

httplib/2:

這是一個(gè)Python內(nèi)置http庫(kù),但是它是偏于底層的庫(kù),一般不直接用。

而httplib2是一個(gè)基于httplib的第三方庫(kù),比httplib實(shí)現(xiàn)更完整,支持緩存、壓縮等功能。

一般這兩個(gè)庫(kù)都用不到,如果需要自己 封裝網(wǎng)絡(luò)請(qǐng)求可能會(huì)需要用到。

urllib/urllib2/urllib3:

urlliib是一個(gè)基于httplib的上層庫(kù),而urllib2和urllib3都是第三方庫(kù),urllib2相對(duì)于urllib增加一些高級(jí)功能,如:HTTP身份驗(yàn)證或Cookie等,在Python3中將urllib2合并到了urllib中。urllib3提供線(xiàn)程安全連接池和文件post等支持,與urllib及urllib2的關(guān)系不大。

requests:

requests庫(kù)是一個(gè)基于urllib/3的第三方網(wǎng)絡(luò)庫(kù),它的特點(diǎn)是功能強(qiáng)大,API優(yōu)雅。由上圖我們可以看到,對(duì)于http客戶(hù)端python官方文檔也推薦我們使用requests庫(kù),實(shí)際工作中requests庫(kù)也是使用的比較多的庫(kù)。

綜上所述,我們選擇選擇requests庫(kù)作為我們爬蟲(chóng)入門(mén)的起點(diǎn)。另外以上的這些庫(kù)都是同步網(wǎng)絡(luò)庫(kù),如果需要高并發(fā)請(qǐng)求的話(huà)可以使用異步網(wǎng)絡(luò)庫(kù):aiohttp,這個(gè)后面豬哥也會(huì)為大家講解。

二、requests介紹

希望大家永遠(yuǎn)記?。簩W(xué)任何一門(mén)語(yǔ)言,都不要忘記去看看官方文檔。也許官方文檔不是最好的入門(mén)教程,但絕對(duì)是最新、最全的教學(xué)文檔!

1.首頁(yè)

requests核心宗旨便是讓用戶(hù)使用方便,間接表達(dá)了他們?cè)O(shè)計(jì)優(yōu)雅的理念。

【注意】:非專(zhuān)業(yè)使用其他 HTTP 庫(kù)會(huì)導(dǎo)致危險(xiǎn)的副作用,包括:安全缺陷癥、冗余代碼癥、重新發(fā)明輪子癥、啃文檔癥、抑郁、頭疼、甚至死亡。

2.功能特性

都說(shuō)requests功能強(qiáng)大,那我們來(lái)看看requests到底有哪些功能特性吧:

  • Keep-Alive & 連接池

  • 國(guó)際化域名和 URL

  • 帶持久 Cookie 的會(huì)話(huà)

  • 瀏覽器式的 SSL 認(rèn)證

  • 自動(dòng)內(nèi)容解碼

  • 基本/摘要式的身份認(rèn)證

  • 優(yōu)雅的 key/value Cookie

  • 自動(dòng)解壓

  • Unicode 響應(yīng)體

  • HTTP(S) 代理支持

  • 文件分塊上傳

  • 流下載

  • 連接超時(shí)

  • 分塊請(qǐng)求

  • 支持 .netrc

requests 完全滿(mǎn)足今日 web 的需求。Requests 支持 Python 2.6—2.7以及3.3—3.7,而且能在 PyPy 下完美運(yùn)行。

三、安裝requests

pip 安裝:

pip install requests

如果是pip3則使用

pip3 install requests

如果你使用anaconda則可以

conda install requests

如果你不想用命令行,可在pycharm中這樣下載庫(kù)

四、爬蟲(chóng)流程

下圖是之前工作總結(jié)的一個(gè)項(xiàng)目開(kāi)發(fā)流程,算是比較詳細(xì),在開(kāi)發(fā)一個(gè)大型的項(xiàng)目真的需要這么詳細(xì),不然項(xiàng)目上線(xiàn)出故障或者修改需求都無(wú)法做項(xiàng)目復(fù)盤(pán),到時(shí)候程序員就有可能背鍋祭天。。。

言歸正傳,給大家看項(xiàng)目的開(kāi)發(fā)流程是想引出爬蟲(chóng)爬取數(shù)據(jù)的流程:

  1. 確定需要爬取的網(wǎng)頁(yè)

  2. 瀏覽器檢查數(shù)據(jù)來(lái)源(靜態(tài)網(wǎng)頁(yè)or動(dòng)態(tài)加載)

  3. 尋找加載數(shù)據(jù)url的參數(shù)規(guī)律(如分頁(yè))

  4. 代碼模擬請(qǐng)求爬取數(shù)據(jù)

五、爬取某東商品頁(yè)

以某東商品頁(yè)為例子帶大家學(xué)習(xí)爬蟲(chóng)的簡(jiǎn)單流程,為什么以某東下手而不是某寶?因?yàn)槟硸|瀏覽商品頁(yè)不需要登錄,簡(jiǎn)單便于大家快速入門(mén)!

1.第一步:瀏覽器中找到你想爬取的商品

ps:并不是在開(kāi)車(chē)哦,為什么選這款商品?因?yàn)楹竺鏁?huì)爬取這款商品的評(píng)價(jià)做數(shù)據(jù)分析,是不是很刺激!

2.第二步:瀏覽器檢查數(shù)據(jù)來(lái)源

打開(kāi)瀏覽器調(diào)試窗口是為了查看網(wǎng)絡(luò)請(qǐng)求,看看數(shù)據(jù)是怎么加載的?是直接返回靜態(tài)頁(yè)面呢,還是js動(dòng)態(tài)加載呢?

鼠標(biāo)右鍵然后點(diǎn)檢查或者直接F12即可打開(kāi)調(diào)試窗口,這里豬哥推薦大家使用Chrome瀏覽器,為什么?因?yàn)楹糜?,程序員都在用!具體的Chrome如何調(diào)試,大家自行網(wǎng)上看教程!

打開(kāi)調(diào)試窗口之后,我們就可以重新請(qǐng)求數(shù)據(jù),然后查看返回的數(shù)據(jù),確定數(shù)據(jù)來(lái)源。

3.第三步:尋找加載數(shù)據(jù)url的參數(shù)規(guī)律

我們可以看到第一個(gè)請(qǐng)求鏈接:https://item.jd.com/1263013576.html 返回的數(shù)據(jù)便是我們要的網(wǎng)頁(yè)數(shù)據(jù)。因?yàn)槲覀兪桥廊∩唐讽?yè),所以不存在分頁(yè)之說(shuō)。

當(dāng)然價(jià)格和一些優(yōu)惠券等核心信息是通過(guò)另外的請(qǐng)求加載,這里我們暫時(shí)不討論,先完成我們的第一個(gè)小例子!

4.第四步:代碼模擬請(qǐng)求爬取數(shù)據(jù)

獲取url鏈接之后我們來(lái)開(kāi)始寫(xiě)代碼吧


import requestsdef spider_jd():
"""爬取京東商品頁(yè)"""
url = 'https://item.jd.com/1263013576.html'
try:
r = requests.get(url) # 有時(shí)候請(qǐng)求錯(cuò)誤也會(huì)有返回?cái)?shù)據(jù)
# raise_for_status會(huì)判斷返回狀態(tài)碼,如果4XX或5XX則會(huì)拋出異常
r.raise_for_status()
print(r.text[:500]) except:
print('爬取失敗')if __name__ == '__main__':
spider_jd()

檢查返回結(jié)果

至此我們就完成了某東商品頁(yè)的爬取,雖然案例簡(jiǎn)單,代碼很少,但是爬蟲(chóng)的流程基本差不多,希望想學(xué)爬蟲(chóng)的同學(xué)自己動(dòng)動(dòng)手實(shí)踐一把,選擇自己喜歡的商品抓取一下,只有自己動(dòng)手才能真的學(xué)到知識(shí)!

六、requests庫(kù)介紹

上面我們使用了requests的get方法,我們可以查看源碼發(fā)現(xiàn)還有其他幾個(gè)方法:post、put、patch、delete、options、head,他們就是對(duì)應(yīng)HTTP的請(qǐng)求方法。

這里簡(jiǎn)單給大家列一下,后面會(huì)用大量的案例來(lái)用而后學(xué),畢竟枯燥的講解沒(méi)人愿意看。

requests.post('http://httpbin.org/post', data = {'key':'value'})

requests.patch('http://httpbin.org/post', data = {'key':'value'})

requests.put('http://httpbin.org/put', data = {'key':'value'})

requests.delete('http://httpbin.org/delete')

requests.head('http://httpbin.org/get')

requests.options('http://httpbin.org/get')

注:httpbin.org是一個(gè)測(cè)試http請(qǐng)求的網(wǎng)站,能正?;貞?yīng)請(qǐng)求

七、總結(jié)

今天為大家簡(jiǎn)單介紹了一下這個(gè)非常重要的庫(kù):requests,requests可以勝任很多簡(jiǎn)單的爬蟲(chóng)需求,它強(qiáng)大的功能以及優(yōu)美的api得到一致的認(rèn)同。

有人多同學(xué)會(huì)問(wèn):Python爬蟲(chóng)到什么境界才算是入門(mén)?你會(huì)熟練使用requests庫(kù)去實(shí)現(xiàn)一些簡(jiǎn)單的爬蟲(chóng)功能就算入門(mén),并不是說(shuō)需要會(huì)各種框架才算是入門(mén),相反能使用低級(jí)工具實(shí)現(xiàn)功能的才更具潛力!

如果你有 有趣的爬蟲(chóng)案例或者想法,可以留言哈,根大家分享一下你的騷操作~

更多的Python學(xué)習(xí)教程也會(huì)繼續(xù)為大家更新!

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶(hù)發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
Python Urllib和urllib2哪個(gè)模塊好?Python入門(mén)
這個(gè)男人讓你的爬蟲(chóng)開(kāi)發(fā)效率提升8倍
Python爬蟲(chóng)小白入門(mén)(二)requests庫(kù)
一文帶你深入了解并學(xué)會(huì)Python爬蟲(chóng)庫(kù)!從此數(shù)據(jù)不用愁
淺談Python兩大爬蟲(chóng)庫(kù)——urllib庫(kù)和requests庫(kù)區(qū)別
Python爬蟲(chóng)系列,Python爬蟲(chóng)代理設(shè)置方法
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服