Python網(wǎng)絡(luò)爬蟲與信息提?。ǘ?/h2>

Reference:

第二周:網(wǎng)絡(luò)爬蟲之提取

單元4:Beautiful Soup庫(kù)入門

4-1 Beautiful Soup庫(kù)的安裝

使用原理:能辦你給它的任何文檔當(dāng)做一鍋湯,然后煲制這鍋湯。

演示html頁(yè)面上地址:http://python123.io/ws/demo.html

如何獲得頁(yè)面的源代碼:

方法1:右鍵點(diǎn)擊查看源代碼

方法2:用request庫(kù)來自動(dòng)獲取頁(yè)面的源代碼

>>>from bs4 import BeautifulSoup

>>>

4-2 Beautiful Soup庫(kù)的基本元素

Beautiful Soup庫(kù)是解析、遍歷、維護(hù)“標(biāo)簽樹”的功能庫(kù)。只要你提供的文件是標(biāo)簽類型,那么Beautiful Soup庫(kù)都可以對(duì)它做很好的解析。

Beautiful Soup對(duì)應(yīng)一個(gè)

Beautiful Soup庫(kù)解析器:

Beautiful Soup類的基本元素:


4-3 基于bs4庫(kù)的HTML內(nèi)容遍歷方法


4-4 基于bs4庫(kù)的HTML格式化和編碼

單元5:信息組織與提取方法

5-1 ?信息標(biāo)記的三種方式

信息的標(biāo)記:

***一個(gè)信息:北京理工大學(xué)

***一組信息:

需要對(duì)信息做一定的標(biāo)記,使得我們能夠理解信息所返回的真實(shí)含義。

比如:信息標(biāo)記 ? ? ? ? ‘name’,‘北京理工大學(xué)’ ? ? ? ? ? ? 給它標(biāo)記一個(gè)name,表明它是一個(gè)名字

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?‘a(chǎn)ddr’,‘北京市海淀區(qū)中關(guān)村’ ? ?給它標(biāo)記一個(gè)address,表明它是一個(gè)地址

信息的標(biāo)記:

(1)標(biāo)記后的信息可形成信息組織結(jié)構(gòu),增加了信息維度。

(2)標(biāo)記后的信息可用于通信、存儲(chǔ)或展示。

(3)標(biāo)記的結(jié)構(gòu)與信息一樣具有重要價(jià)值。

(4) 標(biāo)記后的信息更有利于程序的理解和運(yùn)用,也更有利于人對(duì)信息的深入的認(rèn)識(shí)和理解。

HTML的信息標(biāo)記 = Hyper Text Markup Language 超文本標(biāo)記語(yǔ)言

html是www的信息組織方式。能夠?qū)⒙曇?、圖像、視頻等超文本的信息嵌入到文本當(dāng)中。

HTML的信息標(biāo)記

HTML通過預(yù)定義的<>...</>標(biāo)簽形式組織不同類型的信息。示例如圖:

信息標(biāo)記有哪些種類呢?

信息標(biāo)記的三種形式:XML,JSON和YMAL

XML = eXtensible Markup Language 擴(kuò)展標(biāo)記語(yǔ)言

是一種與HTML接近的標(biāo)記語(yǔ)言。

示例:

JSON = JavaScript Object Notation

有類型的鍵值對(duì)構(gòu)建的信息表達(dá)方式 key:value

什么是鍵值對(duì)?就是給出一個(gè)信息,并對(duì)這個(gè)信息的類型做一個(gè)定義。

比如:

在JSON類型中要注意:無論是鍵還是值都需要通過增加雙引號(hào)來表達(dá)它是字符串的形式。如果是數(shù)字,比如:1990,1911,就直接寫數(shù)字即可。這種類型反應(yīng)在鍵值對(duì)上,說明它是一個(gè)有數(shù)據(jù)類型的鍵值對(duì)。

值的部分有多個(gè)名字的時(shí)候:

鍵值對(duì)之間可以嵌套使用:

總結(jié):JSON使用有類型的鍵值對(duì)將信息組織起來

好處:

YAML=YAML Ain't Markup Language

無類型鍵值對(duì)標(biāo)記信息的表達(dá)形式


5-2? 三種信息標(biāo)記形式的比較

XML實(shí)例:

JSON實(shí)例:

YAML實(shí)例:

比較:

(1)XML 格式是最早的通用信息標(biāo)記語(yǔ)言,可擴(kuò)展性好,但繁瑣。 ?應(yīng)用:Internet上的信息交互與傳遞

(2)JSON 信息有類型,適合程序處理(js),較XML 簡(jiǎn)潔。應(yīng)用:移動(dòng)應(yīng)用云端和節(jié)點(diǎn)的信息通信(一般用在程序?qū)涌谔幚淼牡胤剑?/p>

但是JSON有一個(gè)缺點(diǎn):無注釋。

(3)YAML 信息無類型,文本信息比例最好,可讀性好。應(yīng)用:各類系統(tǒng)的配置文件,有注釋易讀。因?yàn)榧冗m合人類閱讀,又適合程序分析。

5-3 ?信息提取的一般方法

信息提取指從標(biāo)記后的信息中提取所關(guān)注的內(nèi)容。

無論哪種形式,都包含“信息”和“標(biāo)記”兩部分。

信息提取的一般方法:

方法一:完整解析信息的標(biāo)記形式,再提取關(guān)鍵信息。

XML JSON YMAL 需要標(biāo)記解析器 例如:bs4庫(kù)的標(biāo)簽樹遍歷

優(yōu)點(diǎn):信息解析準(zhǔn)確?

缺點(diǎn):提取過程繁瑣,速度慢,需要對(duì)整個(gè)文本的信息組織形式有清楚的理解。

方法二:無視標(biāo)記形式,直接搜索獲取關(guān)鍵信息。

搜索 對(duì)信息的文本查找函數(shù)即可

優(yōu)點(diǎn):提取過程簡(jiǎn)潔,速度較快。

缺點(diǎn):提取結(jié)果準(zhǔn)確性與信息內(nèi)容相關(guān)。

融合方法:結(jié)合形式解析與搜索方法,提取關(guān)鍵信息。

XML JSON YAML 搜索 ---》需要標(biāo)記解析器及文本查找函數(shù)

實(shí)例:提取HTML中所有URL鏈接

思路:(1)搜索到所有的<a>標(biāo)簽

(2)解析<a>標(biāo)簽格式,提取href后的鏈接內(nèi)容

<>.find_all(name,attrs,recursive,string,)

擴(kuò)展方法

5-4 基于bs4庫(kù)的HTML內(nèi)容查找方法

單元6:實(shí)例1:中國(guó)大學(xué)排名爬蟲

最好大學(xué)網(wǎng):http://zuihaodaxue.cn/zuihaodaxuepaiming2016.html

功能描述:

輸入:大學(xué)排名URL鏈接

輸出:大學(xué)排名信息的屏幕輸出(排名,大學(xué)名稱,總分)

技術(shù)路線:requests-bs4

定向爬蟲:僅對(duì)輸入U(xiǎn)RL進(jìn)行爬取,不擴(kuò)展爬取。

(PS:從一個(gè)URL爬取其他更多的URL信息,這個(gè)就不是定向爬蟲了)

STEP1.?查看信息是否寫在html代碼中?還是動(dòng)態(tài)生成的?

STEP2.?查看該網(wǎng)站是否提供了robots的協(xié)定

程序的結(jié)構(gòu)設(shè)計(jì)

步驟1:從網(wǎng)絡(luò)上獲取大學(xué)排名網(wǎng)頁(yè)內(nèi)容 getHTMLText()

步驟2:提取網(wǎng)頁(yè)內(nèi)容中信息到合適的數(shù)據(jù)結(jié)構(gòu) fillUnivList()

步驟3:利用數(shù)據(jù)結(jié)構(gòu)展示并輸出結(jié)果printUnivList()

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容