最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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

由于BeautifulSoup庫不是Python標(biāo)準(zhǔn)庫,因此我們需要單獨(dú)安裝這個(gè)庫,才能使用它。對(duì)于這個(gè)庫的安裝,我們這里秉著簡單的原則,就直接利用pycharm這個(gè)IDLE進(jìn)行庫的自動(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è)庫的安裝,下面我們就可以來使用它了。

關(guān)于這個(gè)庫的官方文檔解釋的是很詳細(xì)的,一定要看一看:點(diǎn)擊打開鏈接

下面我就簡單說一下這個(gè)庫的一些方面。

首先呢,我們還是從一個(gè)例子開始我們的學(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)頁中的標(biāo)題 
執(zhí)

執(zhí)行上面的程序,我們會(huì)得到的結(jié)果為:<title>百度貼吧——全球最大的中文社區(qū)</title>
首先我們來分析下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ì)象。
下面我們來了解下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è)頁面的結(jié)構(gòu)我中間省略了一些無關(guān)緊要的元素,只是為了展示下這種層次化的結(jié)構(gòu)。

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

對(duì)于剛剛的bsObj.title這個(gè)提取標(biāo)題的操作,由于一個(gè)網(wǎng)頁中只有一個(gè)title,所以我們可以直接獲取到它,因?yàn)樗俏ㄒ坏穆?,大家可以這樣理解,在一個(gè)學(xué)校中,你的學(xué)號(hào)是唯一的,我可以通過直接查找學(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)頁中元素的細(xì)化搜索,可以這樣理解啊,假定你已經(jīng)知道一個(gè)人是計(jì)科院的了,那你搜索他的時(shí)候常規(guī)思路便是直接在計(jì)科院找他,而bsObj.head中的head就相當(dāng)于計(jì)科院,它是網(wǎng)頁中的頭部,title就放在這里面,所以我們使用bsObj.head.title也可以實(shí)現(xiàn)這個(gè)效果,其它的代碼可以類似分析。

BeautifulSoup是一個(gè)對(duì)象,所以我們可以通過運(yùn)算符“.”對(duì)它的屬性進(jìn)行提取。

如bsObj.title獲取html的標(biāo)題對(duì)象,bsObj.title.name獲取標(biāo)題的名字。。。

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

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

相關(guān)文章

  • 在django admin中配置搜索域是一個(gè)外鍵時(shí)的處理方法

    在django admin中配置搜索域是一個(gè)外鍵時(shí)的處理方法

    這篇文章主要介紹了在django admin中配置搜索域是一個(gè)外鍵時(shí)的處理方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • Ubuntu16安裝Python3.9的實(shí)現(xiàn)步驟

    Ubuntu16安裝Python3.9的實(shí)現(xiàn)步驟

    這篇文章主要介紹了Ubuntu16安裝Python3.9的實(shí)現(xiàn)步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • python入門之基礎(chǔ)語法學(xué)習(xí)筆記

    python入門之基礎(chǔ)語法學(xué)習(xí)筆記

    學(xué)習(xí)python過程中需要了解的一些基礎(chǔ)語法特整理一下方便更開始接觸python的朋友
    2020-02-02
  • python列表的切片賦值實(shí)現(xiàn)

    python列表的切片賦值實(shí)現(xiàn)

    Python列表切片賦值是一種將一個(gè)列表的特定部分替換為新的元素的操作,本文主要介紹了python列表的切片賦值實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-03-03
  • pandas數(shù)據(jù)處理之 標(biāo)簽列字符轉(zhuǎn)數(shù)字的實(shí)現(xiàn)

    pandas數(shù)據(jù)處理之 標(biāo)簽列字符轉(zhuǎn)數(shù)字的實(shí)現(xiàn)

    這篇文章主要介紹了pandas數(shù)據(jù)處理之 標(biāo)簽列字符轉(zhuǎn)數(shù)字的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • python獲取當(dāng)前文件路徑以及父文件路徑的方法

    python獲取當(dāng)前文件路徑以及父文件路徑的方法

    今天小編就為大家分享一篇python獲取當(dāng)前文件路徑以及父文件路徑的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • Python tkinter和exe打包的方法

    Python tkinter和exe打包的方法

    這篇文章主要介紹了Python tkinter和exe打包的方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-02-02
  • Python語言描述最大連續(xù)子序列和

    Python語言描述最大連續(xù)子序列和

    這篇文章主要介紹了Python語言描述最大連續(xù)子序列和,具有一定借鑒價(jià)值,需要的朋友可以了解下。
    2017-12-12
  • Python測試框架pytest介紹

    Python測試框架pytest介紹

    這篇文章主要介紹了Python測試框架pytest介紹,Pytest是一個(gè)非常成熟的全功能的python測試框架,有簡單靈活易上手、支持參數(shù)化等優(yōu)點(diǎn),下面其相關(guān)內(nèi)容需要的小伙伴可以參考一下
    2022-03-03
  • python中__init__方法知識(shí)點(diǎn)詳解

    python中__init__方法知識(shí)點(diǎn)詳解

    Python中常會(huì)看到在很多類中都有一個(gè)__init__函數(shù),該函數(shù)有什么作用,又該如何使用呢,下面這篇文章主要給大家介紹了關(guān)于python中__init__知識(shí)點(diǎn)的相關(guān)資料,需要的朋友可以參考下
    2023-04-04

最新評(píng)論

高淳县| 荔波县| 静安区| 兴文县| 芒康县| 红原县| 庄浪县| 师宗县| 安新县| 湛江市| 莱西市| 鱼台县| 舒城县| 齐齐哈尔市| 师宗县| 香格里拉县| 昭平县| 嘉祥县| 肇州县| 克什克腾旗| 东阿县| 吕梁市| 云浮市| 塘沽区| 巩义市| 襄汾县| 陆丰市| 本溪| 泾川县| 石狮市| 德昌县| 榆树市| 兴安县| 和田市| 大安市| 益阳市| 金昌市| 日照市| 昭觉县| 天祝| 七台河市|