一篇文章帶你了解webscraper爬蟲插件

最近看到很多同學(xué)都在研究爬蟲,然后我想到了一款塵封已久的插件,很早之前在我剛接觸爬蟲的時候用過,不過自從上了python爬蟲過后,慢慢就擱置了,今天花時間擼一篇教程,給同學(xué)們安利這款插件,如果剛開始學(xué)爬蟲,它一定是你通往人生巔峰的不二人選哦!

創(chuàng)新互聯(lián)于2013年開始,先為古丈等服務(wù)建站,古丈等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為古丈企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。

廢話不多說,這款插件全名叫webscraper,適用于chrome瀏覽器,今天爭取用一篇文章帶大家掌握webscraper的核心要點(diǎn),好了,開始我們今天的webscraper探索之旅!

一:安裝webscraper

首先下載插件,百度搜webscraper有很多資源,這里就不做過多介紹了,文末給大家附上網(wǎng)盤鏈接,大家也可以自行下載,下載過后,將插件包進(jìn)行解壓,解壓完成后,下一步就是在chrome瀏覽器導(dǎo)入啦!

step 1(更多工具-->擴(kuò)展程序):

一篇文章帶你了解webscraper爬蟲插件

step 2(加載插件包):

在擴(kuò)展程序頁面,點(diǎn)擊加載已解壓的擴(kuò)展程序,選擇剛剛解壓好的插件包,至此,即可成功導(dǎo)入webscraper插件,加載完后,記得選擇啟用該插件哈,如下圖的位置,啟用過后,webscraper的圖表就會展示在瀏覽器的工具欄上,至此即說明webscraper導(dǎo)入成功!

一篇文章帶你了解webscraper爬蟲插件

瀏覽器上顯示webscraper圖標(biāo),即可說明該插件導(dǎo)入成功!可正常使用了!

一篇文章帶你了解webscraper爬蟲插件

二:構(gòu)造一個完整的爬蟲流程

插件安裝完成后,接下來我們來用webscraper構(gòu)建一個完整的爬蟲項(xiàng)目:

step 1(create sitemap):

首先,打開webscraper配置框,有兩種方式,一種是鼠標(biāo)右鍵,選擇檢查,打開開發(fā)者工具,另一種直接按F12快捷啟動開發(fā)者工具,如下圖所示,在開發(fā)者工具的欄目里,我們選擇webscraper,即可進(jìn)入webscraper的主配置框。

一篇文章帶你了解webscraper爬蟲插件

打開后,第一步,我們先創(chuàng)建爬蟲站點(diǎn),點(diǎn)擊create new sitemap,選擇create sitemap,在配置框里配置sitemap name 以及 start url,其中start url為爬蟲的起始頁,配置如下圖所示,再點(diǎn)擊下方的create sitemap,即可成功創(chuàng)建。我們在這里以CSDN為例,創(chuàng)建一個name為csdn,starturl為https://www.csdn.net/的sitemap。

一篇文章帶你了解webscraper爬蟲插件

step 2(Add selector):

創(chuàng)建好sitemap后,第二步則創(chuàng)建selector,selector為爬取數(shù)據(jù)的選擇器,需要通過它來選擇我們想要抓取的數(shù)據(jù)

一篇文章帶你了解webscraper爬蟲插件

我們來看Add selector有哪些需要配置的屬性:

一篇文章帶你了解webscraper爬蟲插件

ID:選擇器ID,給選擇器命名

Type:選擇器抓取的數(shù)據(jù)屬性,有Text、Link、image、table、HTML、element等多種類型,我們一般常用的就是Text、link、element這幾種類型。

selector:選擇抓取元素,點(diǎn)擊select,然后鼠標(biāo)選擇我們想要抓取的元素位置即可,鼠標(biāo)選中后,頁面上會進(jìn)行高亮顯示,高亮框則是我們要抓取的元素,效果如下圖,具體返回的數(shù)據(jù)視我們選擇的type而定,如果type選擇的是text,則返回選中區(qū)域類的文本數(shù)據(jù),如果選擇的是link,則返回鏈接,如果選擇的是element,則會將整個區(qū)域的所有元素進(jìn)行返回。

一篇文章帶你了解webscraper爬蟲插件

如果要選擇有相同規(guī)律的列表數(shù)據(jù),比如在這里,我們想選擇這一列所有文章的標(biāo)題,我們只需要連續(xù)選擇兩個標(biāo)題區(qū)域,selector就能自動識別到我們要抓取的元素,把其他結(jié)構(gòu)一致的元素區(qū)域選中,效果如下圖所示:

一篇文章帶你了解webscraper爬蟲插件

element preview:選擇完過后,點(diǎn)擊element preview可預(yù)覽下所選擇的元素,看是否選擇正確。

data preview:點(diǎn)擊data preview,可預(yù)覽返回的文本數(shù)據(jù)。

multiple:選擇是否多選,在前面我們已經(jīng)說過如何通過selector選擇具有相同規(guī)律的元素,但是選擇出來還不足夠,我們還需要勾選multiple,這樣才能真正的抓取多行數(shù)據(jù)。

Regex:正則表達(dá)式,從我們抓取的文本數(shù)據(jù)里面再進(jìn)行正則匹配。

Delay:選擇器生效前的延遲時長,主要擔(dān)心受網(wǎng)速影響,頁面還沒加載完就開始抓取,容易抓取空數(shù)據(jù)。

parent selectors:為該選擇器選擇父選擇器,構(gòu)造樹形結(jié)構(gòu),特別是在構(gòu)造循環(huán)抓取結(jié)構(gòu)的場景經(jīng)常會用到parent selectors的配置。

在這里,我們用selector抓取csdn.net首頁文章列表的標(biāo)題,配置內(nèi)容如下,點(diǎn)擊save selector即可保存該抓取器。如果想要抓取其他的數(shù)據(jù),按照此種方式配置多個selector即可。

一篇文章帶你了解webscraper爬蟲插件

step 3(start scrapy):

設(shè)置好selector后,這時我們就可以開始抓取數(shù)據(jù)了,按下圖方式選擇scrape,開始爬取之前,有兩個參數(shù)需要設(shè)置:

Request interval(ms):默認(rèn)值2000ms,即每兩次請求之間的間隔。

Page load delay(ms):默認(rèn)值500,等待頁面的加載時長。

一篇文章帶你了解webscraper爬蟲插件

點(diǎn)擊start scraping,即可開始正式爬取數(shù)據(jù),爬取完后,爬取的數(shù)據(jù)會顯示在窗口,如果要將數(shù)據(jù)導(dǎo)出到csv,選擇Export data as CSV-->點(diǎn)擊download now,即可將剛才抓取的數(shù)據(jù)導(dǎo)出到CSV。

一篇文章帶你了解webscraper爬蟲插件

至此,整個完整的爬蟲項(xiàng)目就構(gòu)建完成了,是不是很簡單!接下來,我們再看下爬蟲常見的應(yīng)用場景,用webscraper如何解決吧!

三:抓取多級數(shù)據(jù)

在構(gòu)建了一個簡單的csdn文章標(biāo)題抓取項(xiàng)目后,有同學(xué)說,我想再抓取一個作者信息,于是嘗試著構(gòu)建一個author的selector,構(gòu)建完成后,爬取完過后,竟然發(fā)現(xiàn)title跟author對不上,如下圖所示,什么情況,難道是selector設(shè)置的不對么,但是明明看到了author信息也被抓取下來了?。?/p>

一篇文章帶你了解webscraper爬蟲插件

這個問題也是初學(xué)者經(jīng)常所遇到的第一個坑哈!webscraper的selector之間是互相獨(dú)立的,也就是說,你分別構(gòu)建的title selector和author selector分別獨(dú)立的再進(jìn)行工作,根本就沒有存儲他們之間一一對應(yīng)的關(guān)系,所以到最后,看到混亂的數(shù)據(jù)結(jié)果也就再正常不過啦!

解決方法也很簡單,就是應(yīng)用selector的多級結(jié)構(gòu),第一級selector抓取整個元素,元素中包含title跟author信息,然后再構(gòu)建這個元素的子selector,子selector從元素里面再獲取title和author。

首先構(gòu)建父級selector,這里的type需選擇Elements,選擇區(qū)需要選擇包含title和author的整個選擇區(qū)。

一篇文章帶你了解webscraper爬蟲插件

接著,第二步,構(gòu)建子selector,從父selector點(diǎn)擊進(jìn)去,即可進(jìn)入子selector的配置框,接著分別配置title和author兩個selector即可。

一篇文章帶你了解webscraper爬蟲插件

配置子selector需要注意兩點(diǎn),第一,multiple不能再勾選,這里只是對單個元素再次進(jìn)行解析。第二就是,在選擇子selector的時候,要在標(biāo)黃的區(qū)域框進(jìn)行選擇,標(biāo)黃的區(qū)域即是父selector選擇的元素區(qū)域。

一篇文章帶你了解webscraper爬蟲插件

設(shè)置好后,再進(jìn)行抓取,這次,終于看到我們的數(shù)據(jù)恢復(fù)正常啦!

一篇文章帶你了解webscraper爬蟲插件

還有種多級頁面抓取場景是進(jìn)入到二級頁面繼續(xù)抓取數(shù)據(jù),在本場景,我們想點(diǎn)開每一個文章,然后抓取文章的詳情內(nèi)容,這種場景又怎么實(shí)現(xiàn)呢?

利用多級結(jié)構(gòu)也能輕松實(shí)現(xiàn),我們首先構(gòu)建一個抓取文章鏈接的子selector,然后在該鏈接selector之下再構(gòu)建子selector,這時的子selector抓取的元素就變成了該鏈接的詳情文章頁面了。按照常規(guī)的配置方式,我們再配置抓取文章詳情的selector即可。

第一步,先構(gòu)建鏈接selector,這里抓取的是鏈接,selector type需要選擇link,我們這里構(gòu)建了一個名為href的selector。

一篇文章帶你了解webscraper爬蟲插件

第二步,進(jìn)入到href selector的子selector配置頁面,配置文章詳情頁的抓取內(nèi)容,這里我們構(gòu)建了文章詳情頁里的title和content兩個選擇器。

一篇文章帶你了解webscraper爬蟲插件

構(gòu)建完成后,我們來看下整個抓取結(jié)構(gòu),可通過selector graph來查看,整個抓取結(jié)構(gòu)呈三級結(jié)構(gòu),第一級為elements的抓取,主要是解決數(shù)據(jù)一一映射的問題,第二級為子頁面抓取,通過鏈接構(gòu)建子selector來實(shí)現(xiàn)。

至此,我們的子頁面抓取配置完成。

一篇文章帶你了解webscraper爬蟲插件

四:翻頁場景的設(shè)計(jì)模式

我們前面講述的都是抓取單頁內(nèi)容,但是實(shí)際情況中,翻頁場景比比皆是,因?yàn)橐豁撍故镜臄?shù)據(jù)有限,我們需要通過翻頁來獲取更多的數(shù)據(jù),對于這種場景,我們首先介紹一種通過改變URL來獲取翻頁數(shù)據(jù)的方法,來看這個例子。

這是億歐新聞網(wǎng)站,我們可以發(fā)現(xiàn)一個規(guī)律,當(dāng)我們切換頁面的時候,它的url會隨著頁數(shù)而發(fā)生變化,這種有規(guī)律的翻頁場景,我們可以通過設(shè)置starturl來實(shí)現(xiàn),如下的設(shè)置方式表示在1到100進(jìn)行輪詢,間隔為1。

一篇文章帶你了解webscraper爬蟲插件

那對于一些無規(guī)律的翻頁場景呢,我們又有哪些翻頁設(shè)計(jì)模式可以參考呢?常規(guī)的做法我們可以利用循環(huán)嵌套抓取結(jié)構(gòu)來實(shí)現(xiàn)翻頁抓取,還是以億歐網(wǎng)站為例,我們來看如何設(shè)計(jì)一個循環(huán)嵌套抓取結(jié)構(gòu)。

首先在一級selector增加一個獲取下一頁鏈接的selector。該next selector獲取當(dāng)前頁面的下一頁鏈接。elements selector獲取當(dāng)前頁面的元素。

一篇文章帶你了解webscraper爬蟲插件

接著,我們分別配置elements和next的父節(jié)點(diǎn),next的父節(jié)點(diǎn)除了root以外,我們將next自身也添加為父節(jié)點(diǎn)。

一篇文章帶你了解webscraper爬蟲插件

elements的父節(jié)點(diǎn)除了root以外,我們也將next添加為父節(jié)點(diǎn)。

一篇文章帶你了解webscraper爬蟲插件

最后,我們來看下整個抓取結(jié)構(gòu)圖,如下所示,點(diǎn)擊next,可以看到整個結(jié)構(gòu)會無限循環(huán)下去,通過這種方式,我們就可以構(gòu)建一個通用的翻頁循環(huán)抓取結(jié)構(gòu)!

一篇文章帶你了解webscraper爬蟲插件

五:滾動加載場景的設(shè)計(jì)模式

通過點(diǎn)擊下一頁來翻頁是比較常見的翻頁方式,除此以外,我們還會經(jīng)??吹酵ㄟ^滾動來加載更多數(shù)據(jù)的場景,這種場景我們又該如何解決呢?

其實(shí)很簡單,webscraper已經(jīng)幫我們設(shè)計(jì)好了這種元素類型,即selector type里的elements scroll down,在選擇type時,將之前的elements換成這個類型即可,其他配置方式保持不變,我們即可以實(shí)現(xiàn)滾動加載數(shù)據(jù)的抓取。

一篇文章帶你了解webscraper爬蟲插件

六:點(diǎn)擊加載場景的設(shè)計(jì)模式

最后再來說說另外一個點(diǎn)擊加載數(shù)據(jù)的場景吧!我們經(jīng)常會遇到有的場景,需要點(diǎn)擊查看更多才能加載更多的數(shù)據(jù),這種場景怎么解決呢?

當(dāng)然少不了我們強(qiáng)大的webscraper啦!webscraper提供了一種type類型,即elements click,可以輕松解決此類問題,接下來讓我們看一個具體的實(shí)例,我們以億歐網(wǎng)站為例,打開快訊欄目,我們可以看到如果要獲取更多數(shù)據(jù)的話,必須點(diǎn)擊查看更多才會加載。

一篇文章帶你了解webscraper爬蟲插件

與滾動加載場景一樣,我們在一級selector設(shè)置element click 的選擇器,配置內(nèi)容如下:

id:選擇器名稱

type:選擇elements click

selector:選擇需要抓取的元素,與之前設(shè)置方式一致,選擇元素即可

click selector:這里選擇查看更多的元素,也即我們點(diǎn)擊加載按鈕的元素。

click type:一種為click once,即同一個按鈕只點(diǎn)擊一次,一種為click more,同一個按鈕可點(diǎn)擊多次,直到按鈕發(fā)生變化為止。這里我們選擇click more,因?yàn)樾枰粩帱c(diǎn)擊查看更多來獲取更多數(shù)據(jù)。

click element uniqueness:判定是否同一按鈕的條件,主要用于停止條件的判定,有以下四種類型可選擇:

Unique Text - 有同樣文本內(nèi)容的按鈕被視為同一按鈕

Unique HTML+Text - 有同樣 HTML 和文本內(nèi)容的按鈕被視為同一按鈕

Unique HTML - 有同樣 HTML 的按鈕被視為同一按鈕

Unique CSS Selector - 有同樣 CSS 選擇器的按鈕被視為同一按鈕

Discard initial elements(忽略初始元素)- 選擇器不會選中在第一次點(diǎn)擊按鈕前就已經(jīng)存在的元素。用在去重的場景

Delay:這里需要按照實(shí)際情況配置,如果等待加載的時間配置過短,很容易造成抓取不到數(shù)據(jù)的情況。

一篇文章帶你了解webscraper爬蟲插件

配置完click selector過后,接著在其二級子selector繼續(xù)配置想要抓取的數(shù)據(jù)即可。

至此,基本上常用的webscraper操作都介紹完了,掌握以上的方法,基本可以覆蓋80%左右的爬蟲場景。當(dāng)然使用webscraper也主要是在一些小規(guī)模數(shù)據(jù)的抓取場景,如果要爬取較大規(guī)模的數(shù)據(jù),有較大概率會遇到站點(diǎn)的反爬措施,這時就只能上代碼解決啦!

伙伴們學(xué)習(xí)python爬蟲的有多少,舉個爪,評論回復(fù):python爬蟲,領(lǐng)取全套python視頻教程!

網(wǎng)站欄目:一篇文章帶你了解webscraper爬蟲插件
瀏覽地址:http://bm7419.com/article36/jccjpg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App開發(fā)、ChatGPT網(wǎng)站營銷、軟件開發(fā)、移動網(wǎng)站建設(shè)、外貿(mào)建站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站優(yōu)化排名