亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

這一次我們來了解一下美味的湯--BeautifulSoup,這將是我們以后經(jīng)常使用的一個庫,并且非常的好用。

BeautifuleSoup庫的名字取自劉易斯·卡羅爾在《愛麗絲夢游仙境》里的同名詩歌。在故事中,這首歌是素甲魚唱的。就像它在仙境中的說法一樣,BeautifulSoup嘗試化平淡為神奇。它通過定位HTML標簽來格式化和組織復雜的網(wǎng)絡信息,用簡單易用的Python對象為我們展現(xiàn)XML結(jié)構(gòu)信息。

由于BeautifulSoup庫不是Python標準庫,因此我們需要單獨安裝這個庫,才能使用它。對于這個庫的安裝,我們這里秉著簡單的原則,就直接利用pycharm這個IDLE進行庫的自動下載和導入。

首先我們進入pycharm的主界面,單擊file-〉settings-〉Project:untitled-〉Project Interpreter,如下圖:



在上圖中我們會看到一個綠色的加號,這時我們單擊這個加號,會跳出如下的界面(pycharm在這個地方有時候很慢,會一直在這個界面刷新):


這時我們在搜索框中輸入“bs4”,然后選擇列表中的bs4,然后進行安裝,如下圖:


這樣我們就完成了BeautifulSoup這個庫的安裝,下面我們就可以來使用它了。

關于這個庫的官方文檔解釋的是很詳細的,一定要看一看:點擊打開鏈接

下面我就簡單說一下這個庫的一些方面。

首先呢,我們還是從一個例子開始我們的學習:

#coding:utf - 8
from urllib.request import urlopen
from bs4 import BeautifulSoup
 
html = urlopen("http://tieba.baidu.com/")
bsObj=BeautifulSoup(html,"lxml")  #將html對象轉(zhuǎn)化為BeautifulSoup對象
print(bsObj.title)  #輸出這個網(wǎng)頁中的標題 
執(zhí)

執(zhí)行上面的程序,我們會得到的結(jié)果為:<title>百度貼吧——全球最大的中文社區(qū)</title>
首先我們來分析下bsObj=BeautifulSoup(html,"lxml")這句話對我們的html做了什么,在這句代碼中,我們將html對象傳入到BeautifulSoup中將它轉(zhuǎn)化成BeautifulSoup對象,關于第二個參數(shù)lxml,可以到官方文檔中看,解釋得很詳細,這里大家只要知道帶上它就可以了,不需要管它。這樣,我們就成功將html對象轉(zhuǎn)化為了BeautifulSoup對象。
下面我們來了解下BeautifulSoup對象的結(jié)構(gòu),當我們將html轉(zhuǎn)化后得到的結(jié)構(gòu)為:
html-><html><head>....</head><body>.....</body></html>
---head-><head><title>百度貼吧--全球最大的中文社區(qū)<title></head>

          ---title-><title>百度貼吧--全球最大的中文社區(qū)</title>

     ----body->.........

關于這個頁面的結(jié)構(gòu)我中間省略了一些無關緊要的元素,只是為了展示下這種層次化的結(jié)構(gòu)。

從上面我們可以看出,BeautifulSoup將html對象進行了層次化處理了,對它的原網(wǎng)頁的標簽進行了逐層的處理和細化,以便于我們之后使用。也就是我們只要知道,任何HTML(或XML)文件的任意節(jié)點信息都可以被提取出來,只要目標信息的旁邊或者附近有標記就行了,這個標記就是我們網(wǎng)頁中使用到的各種div、li之類的標簽元素,也可以是class、id之類的屬性,通過這些我們都可以對需要的信息進行提取。

對于剛剛的bsObj.title這個提取標題的操作,由于一個網(wǎng)頁中只有一個title,所以我們可以直接獲取到它,因為它是唯一的嘛,大家可以這樣理解,在一個學校中,你的學號是唯一的,我可以通過直接查找學號進而唯一的搜索你,而不會產(chǎn)生歧義。

對于bsObj.title我們有多重替代方案:

  • bsObj.html.head.title
  • bsObj.html.title
  • bsObj.head.title

關于上面的代碼大家是對網(wǎng)頁中元素的細化搜索,可以這樣理解啊,假定你已經(jīng)知道一個人是計科院的了,那你搜索他的時候常規(guī)思路便是直接在計科院找他,而bsObj.head中的head就相當于計科院,它是網(wǎng)頁中的頭部,title就放在這里面,所以我們使用bsObj.head.title也可以實現(xiàn)這個效果,其它的代碼可以類似分析。

BeautifulSoup是一個對象,所以我們可以通過運算符“.”對它的屬性進行提取。

如bsObj.title獲取html的標題對象,bsObj.title.name獲取標題的名字。。。

這里就先簡單介紹這些,后面 我們將繼續(xù)深入說明BeautifulSoup的好的使用方法。

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

最新評論