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

python爬蟲教程之bs4解析和xpath解析詳解

 更新時(shí)間:2022年02月28日 10:32:56   作者:A.way30  
這篇文章主要給大家介紹了關(guān)于python爬蟲教程之bs4解析和xpath解析的相關(guān)資料,bs4、xpath比較容易上手但是功能有限,正則比較晦澀難懂但是功能超級(jí)強(qiáng)大,需要的朋友可以參考下

bs4解析

原理:

1.實(shí)例化一個(gè)BeautifulSoup對象,并且將頁面源碼數(shù)據(jù)加載到該對象中

2.通過調(diào)用BeautifulSoup對象中相關(guān)的屬性或者方法進(jìn)行標(biāo)簽定位和數(shù)據(jù)提取

如何實(shí)例化BeautifulSoup對象:

from bs4 import BeautifulSoup

BeautifulSoup(參數(shù)一,參數(shù)二)

參數(shù)一為文件描述符,參數(shù)二為解析器,一般為’lxml’

一對象的實(shí)例化:

1.將本地的html文檔中的數(shù)據(jù)加載到該對象中

fp = open( './test.html','r',encoding='utf-8')
soup=BeautifulSoup(fp,'lxml')

2.將互聯(lián)網(wǎng)上獲取的頁面源碼加載到該對象中

page_text =response.text
soup=BeatifulSoup(page_text,'lxml')

soup指初始化的BeautifulSoup對象

用于數(shù)據(jù)解析的方法和屬性:

1.soup.tagName:返回的是文檔中第一次出現(xiàn)的tagName對應(yīng)的標(biāo)簽

2.soup.find():

(1).find( ‘tagName’):等同于soup.tagName

(2).屬性定位:soup.find(‘div’,class_/id/或者其他屬性=‘song’)

定位到< div class=“song”>/< div id=“song”>的標(biāo)簽下

class如果沒有加_則代表關(guān)鍵字

3.soup.find_all(‘tagName’):返回符合要求的所有標(biāo)簽(列表)

soup對象:

<div class="tang">
    <ul>
        <li><a  rel="external nofollow"  title= "ging">清明時(shí)節(jié)雨紛紛,路上行人欲斷魂,借問酒家何處有,牧童遙指杏花村</a></1i>
        <li><a  rel="external nofollow"  title="qin">秦時(shí)明月漢時(shí)關(guān),萬里長征人未還,但使龍城飛將在,不教胡馬度陰山</a></1i>
        <li><a href=" http://ww.126.com" rel="external nofollow" alt="qi ">歧王宅里尋常見,崔九堂前幾度聞,正是江南好風(fēng)景,落花時(shí)節(jié)又逢君</a></li>
        <li><a href="http: //www.sina.com" rel="external nofollow"  class="du">杜甫</a></li>
        <li><a  rel="external nofollow"  class="du">杜牧</a></li>
        <li><b>杜小月</b></li>
        <li><i>度蜜月</i></li>
        <li><a  rel="external nofollow" feng">鳳凰臺(tái)上鳳凰游,鳳去臺(tái)空江自流,吳宮花草埋幽徑,晉代衣冠成古丘</a></li>
    </ul>
</div>

4.select:

- select(‘某種選擇器(id,class,標(biāo)簽…選擇器)’),返回的是一個(gè)列表。

標(biāo)簽什么都不加,class前面加. id前面加#

層級(jí)選擇器:

>表示的是一個(gè)層級(jí);空格表示的多個(gè)層級(jí)

     soup.select( '.tang > ul > li > a') 
     soup.select( '.tang >ul a')
     結(jié)果為:[<a  title= "ging">清明時(shí)節(jié)雨紛紛,路上行人欲斷魂,借問酒家何處有,牧童遙指杏花村</a>,
     <a  title="qin">秦時(shí)明月漢時(shí)關(guān),萬里長征人未還,但使龍城飛將在,不教胡馬度陰山</a>,
     <a href=" http://ww.126.com"alt="qi ">歧王宅里尋常見,崔九堂前幾度聞,正是江南好風(fēng)景,落花時(shí)節(jié)又逢君</a>,
     <a href="http: //www.sina.com" class="du">杜甫</a>,
     <a  class="du">杜牧</a>,
    <a >鳳凰臺(tái)上鳳凰游,鳳去臺(tái)空江自流,吳宮花草埋幽徑,晉代衣冠成古丘</a>]

5.獲取標(biāo)簽之間的文本數(shù)據(jù):

-soup.a.text/string/get_text()

-text/get_text():可以獲取某一個(gè)標(biāo)簽中所有的文本內(nèi)容

-string:只可以獲取該標(biāo)簽下面直系的文本內(nèi)容

6.獲取標(biāo)簽中屬性值:

soup.a[‘屬性值’]

print(soup.select( '.tang > ul > li > a') [0]['href'])
結(jié)果:
www.baidu.com

xpath解析

最常用且最便捷高效的一種解析方式。通用性。

xpath解析原理:

1.實(shí)例化一個(gè)etree的對象,且需要將被解析的頁面源碼數(shù)據(jù)加載到該對象中。

2調(diào)用etree對象中的xpath方法結(jié)合著xpath表達(dá)式實(shí)現(xiàn)標(biāo)簽的定位和內(nèi)容的捕獲。

實(shí)例化一個(gè)etree對象:

from lxml import etree

-1.將本地的html文檔中的源碼數(shù)據(jù)加載到etree對象中:

etree.parse(filePath)

-2.可以將從互聯(lián)網(wǎng)上獲取的源碼數(shù)據(jù)加載到該對象中

etree.HTML( 'page_text')

xpath( ‘xpath表達(dá)式’)

xpath表達(dá)式:(返回一個(gè)列表)

-/:表示的是從根節(jié)點(diǎn)開始定位。表示的是一個(gè)層級(jí)。

-//:表示的是多個(gè)層級(jí)??梢员硎緩娜我馕恢瞄_始定位。

-屬性定位://div[@class=‘song’] tag[@attrname=‘attrvalue’]

-索引定位://div[@class=‘song’]/p[3]

索引從1開始的

取文本:

  • /text()獲取的是標(biāo)簽中直系的文本內(nèi)容
  • //text(標(biāo)簽中非直系的文本內(nèi)容(所有的文本內(nèi)容)

取屬性:

  • /@attrName
  • eg:/img/@src
  • ./表示定位到當(dāng)前位置(局部解析)

多個(gè)xpath之間用|分割:

  • tree.xpath(’//div[@class=‘song’]/p[3] | //div[@class=‘song’]’)

總結(jié)

到此這篇關(guān)于python爬蟲教程之bs4解析和xpath解析的文章就介紹到這了,更多相關(guān)python bs4和xpath解析內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 淺談Python 命令行參數(shù)argparse寫入圖片路徑操作

    淺談Python 命令行參數(shù)argparse寫入圖片路徑操作

    這篇文章主要介紹了淺談Python 命令行參數(shù)argparse寫入圖片路徑操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • python簡易實(shí)現(xiàn)任意位數(shù)的水仙花實(shí)例

    python簡易實(shí)現(xiàn)任意位數(shù)的水仙花實(shí)例

    今天小編就為大家分享一篇python簡易實(shí)現(xiàn)任意位數(shù)的水仙花實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-11-11
  • Python處理時(shí)間戳和時(shí)間計(jì)算等的腳本分享

    Python處理時(shí)間戳和時(shí)間計(jì)算等的腳本分享

    這篇文章主要為大家整理總結(jié)了5個(gè)實(shí)用的Python小,可以實(shí)現(xiàn)時(shí)間戳處理和時(shí)間計(jì)算。文中的示例代碼講解詳細(xì),感興趣的小伙伴可以學(xué)習(xí)一下
    2022-07-07
  • 如何使用Python 抓取和優(yōu)化所有網(wǎng)站圖像

    如何使用Python 抓取和優(yōu)化所有網(wǎng)站圖像

    我發(fā)布了一個(gè)通過FTP自動(dòng)優(yōu)化新圖像的教程。這次我們將抓取整個(gè)網(wǎng)站,并在本地優(yōu)化我們遇到的圖像,按URL組織,怎么來操作呢,下面跟隨小編一起學(xué)習(xí)使用Python 抓取和優(yōu)化所有網(wǎng)站圖像的方法,感興趣的朋友一起看看吧
    2023-02-02
  • 爬蟲代理池Python3WebSpider源代碼測試過程解析

    爬蟲代理池Python3WebSpider源代碼測試過程解析

    這篇文章主要介紹了爬蟲代理池Python3WebSpider源代碼測試過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12
  • Python 使用類寫裝飾器的小技巧

    Python 使用類寫裝飾器的小技巧

    裝飾器是一個(gè)返回函數(shù)的函數(shù)。寫一個(gè)裝飾器,除了最常見的在函數(shù)中定義函數(shù)以外,Python還允許使用類來定義一個(gè)裝飾器。這篇文章給大家分享Python 使用類寫裝飾器的小技巧,一起看看吧
    2018-09-09
  • python設(shè)計(jì)并實(shí)現(xiàn)平面點(diǎn)類Point的源代碼

    python設(shè)計(jì)并實(shí)現(xiàn)平面點(diǎn)類Point的源代碼

    這篇文章主要介紹了python-設(shè)計(jì)并實(shí)現(xiàn)平面點(diǎn)類Point,定義一個(gè)平面點(diǎn)類Point,對其重載運(yùn)算符關(guān)系運(yùn)算符,關(guān)系運(yùn)算以距離坐標(biāo)原點(diǎn)的遠(yuǎn)近作為基準(zhǔn),需要的朋友可以參考下
    2024-05-05
  • python中黃金分割法實(shí)現(xiàn)方法

    python中黃金分割法實(shí)現(xiàn)方法

    這篇文章主要介紹了python中黃金分割法實(shí)現(xiàn)方法,涉及Python數(shù)學(xué)計(jì)算的相關(guān)技巧,需要的朋友可以參考下
    2015-05-05
  • Python中異常捕獲與處理的方法總結(jié)

    Python中異常捕獲與處理的方法總結(jié)

    Python異常是在程序執(zhí)行時(shí)發(fā)生的錯(cuò)誤,可能會(huì)導(dǎo)致程序終止運(yùn)行。這篇文章主要為大家總結(jié)了Python中異常捕獲與處理的方法,需要的可以參考一下
    2023-04-04
  • python高級(jí)內(nèi)置函數(shù)用法實(shí)例

    python高級(jí)內(nèi)置函數(shù)用法實(shí)例

    在本篇文章里小編給大家整理的是一篇關(guān)于python高級(jí)內(nèi)置函數(shù)用法實(shí)例內(nèi)容,有興趣的朋友們可以學(xué)參考下。
    2021-09-09

最新評(píng)論

商水县| 永宁县| 西宁市| 湾仔区| 车险| 弥渡县| 安庆市| 洱源县| 安平县| 宁波市| 石林| 洪泽县| 茂名市| 赫章县| 大连市| 阿拉善左旗| 福贡县| 江口县| 瓮安县| 乃东县| 双牌县| 江门市| 开封市| 溆浦县| 兴国县| 厦门市| 襄垣县| 东乡族自治县| 白银市| 澳门| 卢氏县| 安吉县| 启东市| 千阳县| 无为县| 油尖旺区| 江津市| 沾化县| 承德市| 遂溪县| 沧源|