摘要:定制篩選器,對(duì)內(nèi)容進(jìn)行篩選重點(diǎn)。審查元素這是瀏覽器自帶的工具,提供抓包和檢查網(wǎng)頁(yè)源碼的功能,供使用者分析網(wǎng)頁(yè)。超時(shí)設(shè)置,如果服務(wù)器在指定秒數(shù)內(nèi)沒(méi)有應(yīng)答,拋出異常,用于避免無(wú)響應(yīng)連接,整形或浮點(diǎn)數(shù)。返回連接狀態(tài),正常。
前言
python 3.6 !!
本爬蟲(chóng)系列是面對(duì)有Python語(yǔ)法基礎(chǔ)的讀者寫(xiě)的,如果你沒(méi)學(xué)過(guò)python,emmmm.....也沒(méi)關(guān)系,你或許能從每篇文章中學(xué)到一些爬蟲(chóng)的思路;如果你的python基礎(chǔ)語(yǔ)法已經(jīng)應(yīng)用自如,那是極好的。
本系列的教程和實(shí)例均總結(jié)于筆者的自學(xué)經(jīng)歷,如有不足歡迎指正和討論,問(wèn)題我會(huì)盡量回復(fù),也希望大家能有所收獲。
爬蟲(chóng)真好玩.jpg
廢話不多說(shuō),趕緊開(kāi)始這條不歸路吧
無(wú)思路不成器,如果你怎么想都想不出爬蟲(chóng)的原理,不妨來(lái)看下我們平時(shí)是如何上網(wǎng)的,大概就是這樣:
?? ①點(diǎn)開(kāi)目標(biāo)網(wǎng)址→→[可選:登錄/回復(fù)]→→②瀏覽全頁(yè)篩選出價(jià)值內(nèi)容→→③如果很喜歡,還會(huì)拷貝下載回來(lái)
所以爬蟲(chóng)歸結(jié)起來(lái)也就這幾步:
構(gòu)造目標(biāo)網(wǎng)址(重點(diǎn))
發(fā)起請(qǐng)求(request),相當(dāng)于點(diǎn)開(kāi)網(wǎng)頁(yè)。
獲取網(wǎng)頁(yè)內(nèi)容(坑)。
定制篩選器,對(duì)內(nèi)容進(jìn)行篩選(重點(diǎn))。
把爬取結(jié)果保存到容器里。
本節(jié)學(xué)習(xí)的requests模塊將會(huì)實(shí)現(xiàn)二,三步,其他步驟和注意事項(xiàng)將會(huì)在后續(xù)文章中展示出來(lái)。
F12審查元素這是瀏覽器自帶的工具,提供抓包和檢查網(wǎng)頁(yè)源碼的功能,供使用者分析網(wǎng)頁(yè)。也是學(xué)爬蟲(chóng)必須要學(xué)會(huì)的工具,一個(gè)優(yōu)秀的蟲(chóng)爸/蟲(chóng)媽?xiě)?yīng)該花更多的時(shí)間在網(wǎng)頁(yè)分析和debug上。
使用非常簡(jiǎn)單,打開(kāi)任一瀏覽器(筆者的是google chrome),按F12或鼠標(biāo)右鍵檢查。
選擇Element是查看網(wǎng)頁(yè)源碼,是樹(shù)結(jié)構(gòu)的html文檔,里面有要爬取的內(nèi)容。
選擇Network是查看本地和服務(wù)器端交互的包,可以從中獲取目標(biāo)網(wǎng)址和headers。
requests模塊為什么選擇requests,因?yàn)樗芡耆珓偃蝡ython自帶的urllib模塊,簡(jiǎn)化了不必要的功能的同時(shí)讓使用更加簡(jiǎn)單。
安裝非常簡(jiǎn)單,打開(kāi)cmd,直接pip安裝
pip install requests
或pycharm中搜索requests安裝
簡(jiǎn)單使用首先呈上官方文檔,有中文版,歡迎來(lái)啃。
下面主要介紹兩種方法:get和post
get,就是本地向服務(wù)器索取的意思,服務(wù)器檢查請(qǐng)求頭(request headers)后,如果覺(jué)得沒(méi)問(wèn)題,就會(huì)返回信息給本地。
r = requests.get(url,**args)#返回一個(gè)Response對(duì)象,我們可以從這個(gè)對(duì)象中獲取所有我們想要的信息
post,就是本地要向服務(wù)器提交一些數(shù)據(jù)的意思,服務(wù)器還是會(huì)檢查請(qǐng)求頭,如果提交的數(shù)據(jù)和請(qǐng)求頭都沒(méi)問(wèn)題,就會(huì)返回信息給本地。
r = requests.post(url,**args)#也是返回Response對(duì)象參數(shù)詳解
get和post方法中有許多參數(shù)可以使用,部分參數(shù)后面會(huì)詳解。
url:就是目標(biāo)網(wǎng)址,接收完整(帶http)的地址字符串。
headers:請(qǐng)求頭,存儲(chǔ)本地信息如瀏覽器版本,是一個(gè)字典。
data:要提交的數(shù)據(jù),字典。
cookies:cookies,字典。
timeout:超時(shí)設(shè)置,如果服務(wù)器在指定秒數(shù)內(nèi)沒(méi)有應(yīng)答,拋出異常,用于避免無(wú)響應(yīng)連接,整形或浮點(diǎn)數(shù)。
params:為網(wǎng)址添加條件數(shù)據(jù),字典。
payload = {"key1": "value1", "key2": "value2"} r = requests.get("http://httpbin.org/get", params=payload) #相當(dāng)于目標(biāo)網(wǎng)址變成了http://httpbin.org/get?key2=value2&key1=value1
proxies:ip代理時(shí)使用,字典。
Response對(duì)象使用從這個(gè)對(duì)象中獲取所有我們想要的信息非常簡(jiǎn)單,畢竟爬蟲(chóng)要的數(shù)據(jù)主要就三種,html源碼,圖片二進(jìn)制數(shù)據(jù),json數(shù)據(jù),Response對(duì)象一次性滿足你三個(gè)愿望。
r.encoding = "ISO-8859-1" #指定r.text返回的數(shù)據(jù)類型,寫(xiě)在r.text之前。 r.text #默認(rèn)以u(píng)nicode形式返回網(wǎng)頁(yè)內(nèi)容,也就是網(wǎng)頁(yè)源碼的字符串。 r.content #以二進(jìn)制形式返回網(wǎng)頁(yè)內(nèi)容,下載圖片時(shí)專用。 r.json() #把網(wǎng)頁(yè)中的json數(shù)據(jù)轉(zhuǎn)成字典并將其返回。 #還有一些很少用到的方法。 r.headers #返回服務(wù)器端的headers,字典。 r.status_code #返回連接狀態(tài),200正常。小實(shí)例
requests 學(xué)完后就可以到處試試了,如果紅了(拋出異常),那大概是服務(wù)器拒絕你了,畢竟偽裝什么的還沒(méi)提到,服務(wù)器知道你是蟲(chóng)子就把你踢掉了。
import requests r = requets.get("http://cn.python-requests.org/zh_CN/latest/") with open("test.txt","w",encoding = "utf-8") as file:#編碼要對(duì)應(yīng) file.write(r.text) #然后打開(kāi)看看吧,是不是和F12看到的源碼一樣,只不過(guò)是把分支全展開(kāi)了而已。
小提示:并不是所有網(wǎng)站的F12源碼和爬取源碼是一致的,網(wǎng)站有動(dòng)態(tài)的,也有靜態(tài)的;有防爬蟲(chóng)的,也有敞開(kāi)大門(mén)任意爬的。關(guān)于對(duì)策之后會(huì)講到。
第一次寫(xiě)文章,挺累的,我需要做(wan)幾(ji)道(pan)數(shù)(you)學(xué)(xi)題放松一下自己才行。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/41526.html
摘要:總的來(lái)說(shuō)有兩種反爬策略,要么驗(yàn)證身份,把蟲(chóng)子踩死在門(mén)口要么在網(wǎng)站植入各種反爬機(jī)制,讓爬蟲(chóng)知難而退。本節(jié)內(nèi)容就著這兩種反爬策略提出一些對(duì)策。內(nèi)嵌反爬很靈活,沒(méi)有什么固定的代碼格式,要花時(shí)間去分析出來(lái)。 ??之前提到過(guò),有些網(wǎng)站是防爬蟲(chóng)的。其實(shí)事實(shí)是,凡是有一定規(guī)模的網(wǎng)站,大公司的網(wǎng)站,或是盈利性質(zhì)比較強(qiáng)的網(wǎng)站,都是有高級(jí)的防爬措施的。總的來(lái)說(shuō)有兩種反爬策略,要么驗(yàn)證身份,把蟲(chóng)子踩死在門(mén)口...
摘要:能看到這里說(shuō)明快進(jìn)入動(dòng)態(tài)網(wǎng)頁(yè)爬取了,在這之前還有一兩個(gè)知識(shí)點(diǎn)要了解,就如本文要講的及其數(shù)據(jù)提取是什么是輕量級(jí)的文本數(shù)據(jù)交換格式,符合的格式的字符串叫字符串,其格式就像中字符串化后的字典,有時(shí)字典中還雜著列表字典,但是里面的數(shù)據(jù)都被雙引號(hào)包著 ??能看到這里說(shuō)明快進(jìn)入動(dòng)態(tài)網(wǎng)頁(yè)爬取了,在這之前還有一兩個(gè)知識(shí)點(diǎn)要了解,就如本文要講的json及其數(shù)據(jù)提取 JSON 是什么 ??json是輕量級(jí)...
摘要:前篇全片都是生硬的理論使用,今天就放個(gè)靜態(tài)爬取的實(shí)例讓大家體驗(yàn)一下的使用,了解一些背后的原理。給出網(wǎng)站打開(kāi)右鍵檢查第一個(gè)電影,分析源碼先,發(fā)現(xiàn)每個(gè)標(biāo)簽就對(duì)應(yīng)著一個(gè)電影的信息。 前篇全片都是生硬的理論使用,今天就放個(gè)靜態(tài)爬取的實(shí)例讓大家體驗(yàn)一下BeautifulSoup的使用,了解一些背后的原理。 順便在這引入靜態(tài)網(wǎng)頁(yè)的概念——靜態(tài)網(wǎng)頁(yè)是指一次性加載所有內(nèi)容的網(wǎng)頁(yè),爬蟲(chóng)一次請(qǐng)求便能得到所...
摘要:接上回第二部分,編寫(xiě)爬蟲(chóng)。進(jìn)入微信嵌套選擇圖片和上傳圖片接口,實(shí)現(xiàn)一鍵上傳圖片,遇到問(wèn)題看吧,我現(xiàn)在已經(jīng)可以通過(guò)爬蟲(chóng)獲取的提問(wèn)標(biāo)題了。微信故意省略想做小偷站的,看到這里基本上就能搞出來(lái)了。下一篇,采集入庫(kù) 上回,我裝了環(huán)境 也就是一對(duì)亂七八糟的東西 裝了pip,用pip裝了virtualenv,建立了一個(gè)virtualenv,在這個(gè)virtualenv里面,裝了Django,創(chuàng)建了一個(gè)...
摘要:自阮大神的文章發(fā)布以來(lái),有了一些改動(dòng),添加有很多有用的功能,特別是這個(gè)功能,對(duì)打造命令行工具集合非常有用,所以寫(xiě)一個(gè)新版本的教程還是有必要的。 前言 使用命令行程序?qū)Τ绦騿T來(lái)說(shuō)很常見(jiàn),就算是前端工程師或者開(kāi)發(fā)gui的,也需要使用命令行來(lái)編譯程序或者打包程序 熟練使用命令行工具能極大的提高開(kāi)發(fā)效率,linux自帶的命令行工具都非常的有用,但是這些工具都是按照通用需求開(kāi)發(fā)出來(lái)的,如果有一些...
閱讀 1117·2021-11-16 11:45
閱讀 3134·2021-10-13 09:40
閱讀 725·2019-08-26 13:45
閱讀 1225·2019-08-26 13:32
閱讀 2181·2019-08-26 13:23
閱讀 923·2019-08-26 12:16
閱讀 2834·2019-08-26 11:37
閱讀 1764·2019-08-26 10:32