python3實(shí)現(xiàn)網(wǎng)絡(luò)爬蟲之BeautifulSoup使用詳解
這一次我們來(lái)了解一下美味的湯--BeautifulSoup,這將是我們以后經(jīng)常使用的一個(gè)庫(kù),并且非常的好用。
BeautifuleSoup庫(kù)的名字取自劉易斯·卡羅爾在《愛(ài)麗絲夢(mèng)游仙境》里的同名詩(shī)歌。在故事中,這首歌是素甲魚唱的。就像它在仙境中的說(shuō)法一樣,BeautifulSoup嘗試化平淡為神奇。它通過(guò)定位HTML標(biāo)簽來(lái)格式化和組織復(fù)雜的網(wǎng)絡(luò)信息,用簡(jiǎn)單易用的Python對(duì)象為我們展現(xiàn)XML結(jié)構(gòu)信息。
由于BeautifulSoup庫(kù)不是Python標(biāo)準(zhǔn)庫(kù),因此我們需要單獨(dú)安裝這個(gè)庫(kù),才能使用它。對(duì)于這個(gè)庫(kù)的安裝,我們這里秉著簡(jiǎn)單的原則,就直接利用pycharm這個(gè)IDLE進(jìn)行庫(kù)的自動(dòng)下載和導(dǎo)入。
首先我們進(jìn)入pycharm的主界面,單擊file-〉settings-〉Project:untitled-〉Project Interpreter,如下圖:
在上圖中我們會(huì)看到一個(gè)綠色的加號(hào),這時(shí)我們單擊這個(gè)加號(hào),會(huì)跳出如下的界面(pycharm在這個(gè)地方有時(shí)候很慢,會(huì)一直在這個(gè)界面刷新):
這時(shí)我們?cè)谒阉骺蛑休斎搿癰s4”,然后選擇列表中的bs4,然后進(jìn)行安裝,如下圖:
這樣我們就完成了BeautifulSoup這個(gè)庫(kù)的安裝,下面我們就可以來(lái)使用它了。
關(guān)于這個(gè)庫(kù)的官方文檔解釋的是很詳細(xì)的,一定要看一看:點(diǎn)擊打開(kāi)鏈接
下面我就簡(jiǎn)單說(shuō)一下這個(gè)庫(kù)的一些方面。
首先呢,我們還是從一個(gè)例子開(kāi)始我們的學(xué)習(xí):
#coding:utf - 8 from urllib.request import urlopen from bs4 import BeautifulSoup html = urlopen("http://tieba.baidu.com/") bsObj=BeautifulSoup(html,"lxml") #將html對(duì)象轉(zhuǎn)化為BeautifulSoup對(duì)象 print(bsObj.title) #輸出這個(gè)網(wǎng)頁(yè)中的標(biāo)題 執(zhí)
執(zhí)行上面的程序,我們會(huì)得到的結(jié)果為:<title>百度貼吧——全球最大的中文社區(qū)</title>
首先我們來(lái)分析下bsObj=BeautifulSoup(html,"lxml")這句話對(duì)我們的html做了什么,在這句代碼中,我們將html對(duì)象傳入到BeautifulSoup中將它轉(zhuǎn)化成BeautifulSoup對(duì)象,關(guān)于第二個(gè)參數(shù)lxml,可以到官方文檔中看,解釋得很詳細(xì),這里大家只要知道帶上它就可以了,不需要管它。這樣,我們就成功將html對(duì)象轉(zhuǎn)化為了BeautifulSoup對(duì)象。
下面我們來(lái)了解下BeautifulSoup對(duì)象的結(jié)構(gòu),當(dāng)我們將html轉(zhuǎn)化后得到的結(jié)構(gòu)為:
html-><html><head>....</head><body>.....</body></html>
---head-><head><title>百度貼吧--全球最大的中文社區(qū)<title></head>
---title-><title>百度貼吧--全球最大的中文社區(qū)</title>
----body->.........
關(guān)于這個(gè)頁(yè)面的結(jié)構(gòu)我中間省略了一些無(wú)關(guān)緊要的元素,只是為了展示下這種層次化的結(jié)構(gòu)。
從上面我們可以看出,BeautifulSoup將html對(duì)象進(jìn)行了層次化處理了,對(duì)它的原網(wǎng)頁(yè)的標(biāo)簽進(jìn)行了逐層的處理和細(xì)化,以便于我們之后使用。也就是我們只要知道,任何HTML(或XML)文件的任意節(jié)點(diǎn)信息都可以被提取出來(lái),只要目標(biāo)信息的旁邊或者附近有標(biāo)記就行了,這個(gè)標(biāo)記就是我們網(wǎng)頁(yè)中使用到的各種div、li之類的標(biāo)簽元素,也可以是class、id之類的屬性,通過(guò)這些我們都可以對(duì)需要的信息進(jìn)行提取。
對(duì)于剛剛的bsObj.title這個(gè)提取標(biāo)題的操作,由于一個(gè)網(wǎng)頁(yè)中只有一個(gè)title,所以我們可以直接獲取到它,因?yàn)樗俏ㄒ坏穆?,大家可以這樣理解,在一個(gè)學(xué)校中,你的學(xué)號(hào)是唯一的,我可以通過(guò)直接查找學(xué)號(hào)進(jìn)而唯一的搜索你,而不會(huì)產(chǎn)生歧義。
對(duì)于bsObj.title我們有多重替代方案:
- bsObj.html.head.title
- bsObj.html.title
- bsObj.head.title
關(guān)于上面的代碼大家是對(duì)網(wǎng)頁(yè)中元素的細(xì)化搜索,可以這樣理解啊,假定你已經(jīng)知道一個(gè)人是計(jì)科院的了,那你搜索他的時(shí)候常規(guī)思路便是直接在計(jì)科院找他,而bsObj.head中的head就相當(dāng)于計(jì)科院,它是網(wǎng)頁(yè)中的頭部,title就放在這里面,所以我們使用bsObj.head.title也可以實(shí)現(xiàn)這個(gè)效果,其它的代碼可以類似分析。
BeautifulSoup是一個(gè)對(duì)象,所以我們可以通過(guò)運(yùn)算符“.”對(duì)它的屬性進(jìn)行提取。
如bsObj.title獲取html的標(biāo)題對(duì)象,bsObj.title.name獲取標(biāo)題的名字。。。
這里就先簡(jiǎn)單介紹這些,后面 我們將繼續(xù)深入說(shuō)明BeautifulSoup的好的使用方法。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- 使用Python爬蟲庫(kù)BeautifulSoup遍歷文檔樹(shù)并對(duì)標(biāo)簽進(jìn)行操作詳解
- Python爬蟲庫(kù)BeautifulSoup獲取對(duì)象(標(biāo)簽)名,屬性,內(nèi)容,注釋
- Python爬蟲庫(kù)BeautifulSoup的介紹與簡(jiǎn)單使用實(shí)例
- Python下利用BeautifulSoup解析HTML的實(shí)現(xiàn)
- python使用beautifulsoup4爬取酷狗音樂(lè)代碼實(shí)例
- python3 BeautifulSoup模塊使用字典的方法抓取a標(biāo)簽內(nèi)的數(shù)據(jù)示例
- Python如何使用BeautifulSoup爬取網(wǎng)頁(yè)信息
- Python爬蟲實(shí)現(xiàn)使用beautifulSoup4爬取名言網(wǎng)功能案例
- Python使用Beautiful Soup爬取豆瓣音樂(lè)排行榜過(guò)程解析
- Python BeautifulSoup [解決方法] TypeError: list indices must be integers or slices, not str
- Python基于BeautifulSoup和requests實(shí)現(xiàn)的爬蟲功能示例
- python中bs4.BeautifulSoup的基本用法
- Python獲取基金網(wǎng)站網(wǎng)頁(yè)內(nèi)容、使用BeautifulSoup庫(kù)分析html操作示例
- python使用BeautifulSoup與正則表達(dá)式爬取時(shí)光網(wǎng)不同地區(qū)top100電影并對(duì)比
- Python HTML解析器BeautifulSoup用法實(shí)例詳解【爬蟲解析器】
- Python爬蟲beautifulsoup4常用的解析方法總結(jié)
- Python3爬蟲學(xué)習(xí)之爬蟲利器Beautiful Soup用法分析
- python爬蟲開(kāi)發(fā)之Beautiful Soup模塊從安裝到詳細(xì)使用方法與實(shí)例
相關(guān)文章
python實(shí)戰(zhàn)之利用pygame實(shí)現(xiàn)貪吃蛇游戲(一)
這篇文章主要介紹了python實(shí)戰(zhàn)之利用pygame實(shí)現(xiàn)貪吃蛇游戲,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)python的小伙伴們有很好的幫助喲,需要的朋友可以參考下2021-05-05python機(jī)器學(xué)習(xí)Sklearn實(shí)戰(zhàn)adaboost算法示例詳解
這篇文章主要為大家介紹了python機(jī)器學(xué)習(xí)Sklearn實(shí)戰(zhàn)adaboost算法的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪2021-11-11Python+tkinter使用80行代碼實(shí)現(xiàn)一個(gè)計(jì)算器實(shí)例
這篇文章主要介紹了Python+tkinter使用80行代碼實(shí)現(xiàn)一個(gè)計(jì)算器實(shí)例,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-01-01Python 獲取 datax 執(zhí)行結(jié)果保存到數(shù)據(jù)庫(kù)的方法
今天小編就為大家分享一篇Python 獲取 datax 執(zhí)行結(jié)果保存到數(shù)據(jù)庫(kù)的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-07-07PyTorch和Keras計(jì)算模型參數(shù)的例子
今天小編就為大家分享一篇PyTorch和Keras計(jì)算模型參數(shù)的例子,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-01-01pycharm 復(fù)制代碼出現(xiàn)空格的解決方式
這篇文章主要介紹了pycharm 復(fù)制代碼出現(xiàn)空格的解決方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-01-01Python生命游戲?qū)崿F(xiàn)原理及過(guò)程解析(附源代碼)
這篇文章主要介紹了Python生命游戲?qū)崿F(xiàn)原理及過(guò)程解析(附源代碼),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08解決Python中定時(shí)任務(wù)線程無(wú)法自動(dòng)退出的問(wèn)題
今天小編就為大家分享一篇解決Python中定時(shí)任務(wù)線程無(wú)法自動(dòng)退出的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-02-02