丝袜人妻一区二区三区_少妇福利无码视频_亚洲理论片在线观看_一级毛片国产A级片

當(dāng)前位置:首頁 > 娛樂

【爬蟲社區(qū)】Python入門(一):爬蟲基本結(jié)構(gòu)&簡單實例

爬行動物能做什么?一句話,一般來說,通過瀏覽器可以獲得的數(shù)據(jù),爬蟲都能得到。

這句話可以說是包羅萬象。一是說明了爬蟲的本質(zhì)是一個服務(wù)端,實現(xiàn)的功能類似于瀏覽器;二是說明了爬蟲的界限,如果不能正常訪問到的數(shù)據(jù)就不能通過爬蟲獲?。蝗桥老x的最高境界,只要是瀏覽器能正常訪問的都可以用爬蟲獲取。更多爬蟲的神奇用處。

下面我們講講爬蟲的基本結(jié)構(gòu)和簡單實現(xiàn)。這篇文章我不準(zhǔn)備詳細(xì)地講具體怎么寫爬蟲,只是先用一個非常簡單的實現(xiàn),給大家看看爬蟲是個什么樣子。詳細(xì)的內(nèi)容我們后面一個一個慢慢說。

一、爬蟲的基本結(jié)構(gòu)

讓我們忽略掉來自各種各樣的資料對于爬蟲結(jié)構(gòu)的描述,把問題盡可能地描述簡單一點。前面說到,爬蟲是一個獲取正常瀏覽器可以獲取的數(shù)據(jù)的自動化獲取程序。那么,從這個功能出發(fā),我們需要干的事情其實就兩件事情:找到我們需要的網(wǎng)頁,然后把他們一個一個處理一遍。(這句話很重要,我們在后面的后面講到海量數(shù)據(jù)爬取策略的時候還要回到這句話。)那么問題就來了:一,怎么找到我們需要的網(wǎng)頁的那個入口?二,怎么處理我們需要處理的網(wǎng)頁?

對于單個頁面來說,入口的來源有兩種,一種是已知地址,比如我們院的網(wǎng)站的教學(xué)研究人員:教學(xué)研究人員;

另外一種是你可以通過前面爬下來的網(wǎng)頁中獲取入口,比如這個頁面上所有老師的個人主頁。這一點很重要,后面我們在把小爬蟲逐步變大的時候還要反復(fù)回到這里。

好的,后面的部分,讓我們通過解決第二個問題(處理網(wǎng)頁)的過程,順便看看怎么解決第一個問題(獲取更多入口)。我們一起開看看一個單頁爬蟲是怎么實現(xiàn)的。

二、爬蟲實例:簡單的單頁爬蟲

好了,現(xiàn)在我們要處理網(wǎng)頁了??墒蔷W(wǎng)頁要怎么處理呢?讓我們回憶一下我們使用瀏覽器的過程:你先把一個地址復(fù)制進(jìn)瀏覽器的框框里面,或者點開一個鏈接;然后瀏覽器的進(jìn)度條跑一下(有可能快也有可能慢),然后我們就在瀏覽器里面看到了數(shù)據(jù)。首先,進(jìn)度條跑的過程完成了一個對網(wǎng)頁的請求,然后瀏覽器把請求下來的數(shù)據(jù)進(jìn)行處理,然后就輸出出來。這是一個極其簡化但是不太準(zhǔn)確的對于瀏覽器工作原理的描述。那么爬蟲和瀏覽器有什么不同呢?一般來說,我們是只需要解析網(wǎng)頁,而不需要渲染瀏覽器環(huán)境的;另外,我們需要特定網(wǎng)頁的特點數(shù)據(jù),因此要用一定的方式把數(shù)據(jù)組織并儲存起來。所以,爬蟲的核心模塊有三個:請求、解析、儲存。

首先我們給一個入口:教學(xué)研究人員。

這就是我們今天要處理的目標(biāo)網(wǎng)頁。我們今天要實現(xiàn)的目的就是把這個頁面上所有老師的姓名和個人主頁的鏈接(也就是可能的下一次爬蟲的入口)提取出來。下面開始寫爬蟲吧~

1、請求

這里我們使用的package是requests。這是一個第三方模塊(具體怎么下載以后再說),對HTTP協(xié)議進(jìn)行了高度封裝,非常好用。所謂HTTP協(xié)議,簡單地說就是一個請求過程。我們先不管這玩意是啥,以后再討論。這個部分,我們要實現(xiàn)的目的是把網(wǎng)頁請求(或者說下載)下來。

首先我們導(dǎo)入requests:

import requests

下面調(diào)用requests的get函數(shù),把網(wǎng)頁請求下來:

r = reque(';)

返回的“r”的是一個包含了整個HTTP協(xié)議需要的各種各樣的東西的對象。我們先不管都有啥,先把我們需要的網(wǎng)頁提取出來:

html = r.content

好了,到這一步我們已經(jīng)獲取了網(wǎng)頁的源代碼。具體源代碼是什么樣的呢?右鍵,點擊“查看源文件”或者“查看源”就可以看到:

view-source:http://www.wise.xmu.edu.cn/people/faculty

2、解析

當(dāng)然從這一大坨代碼里面找信息太麻煩了。我們可以用瀏覽器提供的另外一個工具:審查元素。這里我們先不講怎么使用審查元素,先從源代碼里面找。找到的我們需要的信息如下:

這里我們使用bs4來解析。bs4是一個非常好的解析網(wǎng)頁的庫,后面我們會詳細(xì)介紹。這次的解析先給大家看bs4里面最常用的幾個BeautifulSoup對象的方法(method)。我們使用的這幾個方法,主要是通過HTML的標(biāo)簽和標(biāo)簽里面的參數(shù)來定位,然后用特定方法(method)提取數(shù)據(jù)。

首先還是導(dǎo)入package:

from bs4 import BeautifulSoup

然后創(chuàng)建一個BeautifulSoup對象:

soup = BeautifulSoup(html,';) #是解析器

下面我們根據(jù)我們看到的網(wǎng)頁提取。首先提取我復(fù)制的這部分的代碼的第一行,先定位到這部分代碼:

div_people_list = ('div', attrs={'class': 'people_list'})

這里我們使用了BeautifulSoup對象的find方法。這個方法的意思是找到帶有‘div’這個標(biāo)簽并且參數(shù)包含" class = 'people_list' "的HTML代碼。如果有多個的話,find方法就取第一個。那么如果有多個呢?正好我們后面就遇到了,現(xiàn)在我們要取出所有的“a”標(biāo)簽里面的內(nèi)容:

a_s = div_('a', attrs={'target': '_blank'})

這里我們使用find_all方法取出所有標(biāo)簽為“a”并且參數(shù)包含“ target = ‘_blank‘ ”的代碼,返回一個列表?!癮”標(biāo)簽里面的“href”參數(shù)是我們需要的老師個人主頁的信息,而標(biāo)簽里面的文字是老師的姓名。我們繼續(xù):

for a in a_s: url = a['href'] name = a.get_text()

這里我們使用BeautifulSoup支持的方法,使用類似于Python字典索引的方式把“a”標(biāo)簽里面“href”參數(shù)的值提取出來,賦值給url(Python實際上是對對象的引用),用get_text()方法把標(biāo)簽里面的文字提起出來。

事實上,使用這四個方法就可以正常地解析大部分HTML了。不過如果只用這四個方法,很多程序會寫的異常原始。所以我們后面再繼續(xù)介紹更多解析方法。

1.儲存

這里我們先弱化一下具體的儲存方法,先輸出到控制臺上面。我們在剛才的代碼的基礎(chǔ)上加一行代碼:

for a in a_s: url = a['href'] name = a.get_text() print name,url

使用print關(guān)鍵詞把得到的數(shù)據(jù)print出來。讓我們看看結(jié)果:

好的,到這里一個原型就完成了。這就是一個非常簡單的爬蟲,總代碼不過十幾行。復(fù)雜到幾百幾千行的爬蟲,都是在這樣的一個原型的基礎(chǔ)上不斷深化、不斷完善得到的。

End.

作者:iGuo(中國統(tǒng)計網(wǎng)特邀認(rèn)證作者)

本文為頭條號作者原創(chuàng)。未經(jīng)允許,不得轉(zhuǎn)載。

運行人員:中國統(tǒng)計網(wǎng)小編(微信號:itongjilove)

中國統(tǒng)計網(wǎng),是國內(nèi)最早的大數(shù)據(jù)學(xué)習(xí)網(wǎng)站,公眾號:中國統(tǒng)計網(wǎng)

1.《【爬蟲社區(qū)】Python入門(一):爬蟲基本結(jié)構(gòu)&簡單實例》援引自互聯(lián)網(wǎng),旨在傳遞更多網(wǎng)絡(luò)信息知識,僅代表作者本人觀點,與本網(wǎng)站無關(guān),侵刪請聯(lián)系頁腳下方聯(lián)系方式。

2.《【爬蟲社區(qū)】Python入門(一):爬蟲基本結(jié)構(gòu)&簡單實例》僅供讀者參考,本網(wǎng)站未對該內(nèi)容進(jìn)行證實,對其原創(chuàng)性、真實性、完整性、及時性不作任何保證。

3.文章轉(zhuǎn)載時請保留本站內(nèi)容來源地址,http://f99ss.com/yule/3166731.html

上一篇

【伍佰億服裝網(wǎng)】足療店老板權(quán)健苦旅:妻子用權(quán)健毀容 疼得睡不著

【爬蟲社區(qū)】謝佳標(biāo):RCurl爬蟲和Shiny包在游戲行業(yè)的應(yīng)用

【爬蟲社區(qū)】謝佳標(biāo):RCurl爬蟲和Shiny包在游戲行業(yè)的應(yīng)用

爬蟲社區(qū)相關(guān)介紹,【數(shù)盟致力于成為最卓越的數(shù)據(jù)科學(xué)社區(qū),聚焦于大數(shù)據(jù)、分析挖掘、數(shù)據(jù)可視化領(lǐng)域,業(yè)務(wù)范圍:線下活動、在線課程、獵頭服務(wù)、項目對接】 :010 分享嘉賓 謝佳標(biāo)準(zhǔn)音樂趣味游戲高級數(shù)據(jù)分析師 共享主要內(nèi)容 ...

爬蟲社區(qū) 虎撲社區(qū)論壇數(shù)據(jù)爬蟲分析報告

爬蟲社區(qū) 虎撲社區(qū)論壇數(shù)據(jù)爬蟲分析報告

以下是虎撲官方介紹: 虎撲是一個面向年輕男性的專業(yè)網(wǎng)站,涵蓋籃球、足球、F1、NFL等賽事的原創(chuàng)新聞欄目和視頻報道。它有一個大型的生活/影視/電競/汽車/數(shù)字在線交流社區(qū),對談?wù)擉w育充滿興趣。 二、數(shù)據(jù)描述 使用的數(shù)據(jù)源: 2018/1/1~1/19的兩個半星期,虎撲論壇步行街各分區(qū)的帖子全部被撤,關(guān)注度極低的帖子總數(shù)為3.3W...