欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python3實(shí)現(xiàn)網(wǎng)絡(luò)爬蟲之BeautifulSoup使用詳解

 更新時(shí)間:2018年12月19日 14:58:14   作者:陌上行走  
這篇文章主要介紹了python3實(shí)現(xiàn)網(wǎng)絡(luò)爬蟲之BeautifulSoup使用詳解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

這一次我們來(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í)有所幫助,也希望大家多多支持腳本之家。

您可能感興趣的文章:

相關(guān)文章

最新評(píng)論