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