精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

巨細!小姐姐告訴你關于 BeautifulSoup 的一切

網絡 通信技術
BeautifulSoup 用 NavigableString 類來包裝 tag 中的字符串,NavigableString 表示可遍歷的字符串。

[[427165]]

詳細了解 BeautifulSoup 爬蟲

前面第一篇文章是關于 BeautifulSoup 爬蟲的基礎知識詳解第一部分,主要介紹了 BeautifulSoup 爬蟲的安裝過程及簡介,同時又快速學習了利用 BeautifulSoup 技術定位標簽、獲取標簽內容的相關知識點,今天的文章將深入地介紹 BeautifulSoup 技術的詳細語法及其相關用法。

1.BeautifulSoup 對象

BeautifulSoup 將復雜的 HTML 文檔轉換成一個樹形結構,每個節點都是 Python 對象,BeautifulSoup 官方文檔將所有的對象歸納為以下四種:

  • Tag
  • NavigableString
  • BeautifulSoup
  • Comment

接下來詳細介紹 BeautifulSoup 的四個對象:

Tag

Tag 對象表示 XML 或 HTML 文檔中的標簽,通俗地講就是 HTML 中的一個個標簽,該對象與 HTML 或 XML 原生文檔中的標簽相同。Tag 有很多方法和屬性,BeautifulSoup 中定義為 soup.Tag,其中 Tag 為 HTML 中的標簽,比如 a、title 等,其結果返回完整的標簽內容,包括標簽的屬性和內容等。例如以下實例就是 Tag:

  1. <title>BeautifulSoup 技術詳解</title> 
  2. <p class="title">Hello</p> 
  3. <p class="con">Python 技術</p> 

以上的 HTML 代碼中,title、p 都是標簽,起始標簽和結束標簽之間加上內容就是 Tag。標簽獲取方法代碼如下:

  1. #創建本地文件soup對象 
  2.    soup = BeautifulSoup(open('test.html','rb'), "html.parser"
  3.    #獲取a標簽 
  4.    a = soup.a  #Tag 
  5.    print('a標簽的內容是:', a) 

除此之外,Tag 中最重要的屬性是 name 和 attrs 。

  • name

name 屬性用于獲取文檔樹的標簽名字,如果想獲取 title 標簽的名字,只要使用 soup.title.name 代碼即可,對于內部標簽,輸出的值便為標簽本身的名稱。

  • attrsattrs是屬性(attributes)的英文簡稱,屬性是網頁標簽的重要內容。一個標簽(Tag)可能有很多個屬性,例如:
  1. <a href="https://www.baidu.com" class="xiaodu" id="l1">ddd</a> 

以上實例存在兩個屬性,一個是class屬性,對應的值為“xiaodu”;一個是id屬性,對應的值為“l1”。Tag屬性操作方法與Python字典相同,獲取p標簽的所有屬性代碼如下,得到一個字典類型的值,它獲取的是第一個段落 p 的屬性及屬性值。

  1. # 獲取屬性 
  2. print(soup.p.attrs) 
  3.  
  4. # 獲取屬性值 
  5. print(soup.a['class']) 
  6. #[u'xiaodu'
  7. print(soup.a.get('class')) 
  8. #[u'l1'

BeautifulSoup 每個標簽 tag 可能有很多個屬性,可以通過 “.attrs” 獲取屬性,tag 的屬性可以被修改、刪除或添加。

NavigableString

NavigableString 也叫可遍歷的字符串,字符串常被包含在 tag 內,BeautifulSoup 用 NavigableString 類來包裝tag中的字符串,

BeautifulSoup 用 NavigableString 類來包裝 tag 中的字符串,NavigableString 表示可遍歷的字符串。一個 NavigableString 字符串與 Python 中的 Unicode 字符串相同,并且支持包含在遍歷文檔樹和搜索文檔樹中的一些特性。下述代碼可查看 NavigableString 的類型。

  1. # coding=utf-8 
  2. from bs4 import BeautifulSoup 
  3. soup = BeautifulSoup(open('test.html','rb'), "html.parser"
  4. tag = soup.title 
  5. print(type(tag.string)) 

輸出結果如下:

  1. <class 'bs4.element.NavigableString'

BeautifulSoup

BeautifulSoup 對象表示的是一個文檔的全部內容,通常情況下把它當作 Tag 對象,該對象支持遍歷文檔樹和搜索文檔樹中描述的大部分的方法,下面代碼是輸出 soup 對象的類型,輸出結果就是 BeautifulSoup 對象類型。

  1. # coding=utf-8 
  2. from bs4 import BeautifulSoup 
  3. soup = BeautifulSoup(open('test.html','rb'), "html.parser"
  4. tag = soup.title 
  5.  
  6. print(type(soup)) 

輸出結果如下:

  1. <class 'bs4.BeautifulSoup'

因為 BeautifulSoup 對象并不是真正的 HTML 或 XML 的標簽 tag,所以它沒有 name 和 attribute 屬性。但有時查看它的.name 屬性是很方便的,故 BeautifulSoup 對象包含了一個值為[document]的特殊屬性soup.name。下述代碼即是輸出 BeautifulSoup 對象的 name 屬性,其值為 [document]。

Comment

Comment 對象是一個特殊類型的 NavigableString 對象,它用于處理注釋對象。下面這個示例代碼用于讀取注釋內容,代碼如下:

  1. markup = "<b><!-- hello comment code --></b>" 
  2.     soup = BeautifulSoup(markup, "html.parser"
  3.     comment = soup.b.string 
  4.     print(type(comment)) 
  5.     print(comment) 
  6.      
  7. if __name__ == '__main__'
  8.     mark() 

輸出結果如下:

  1. <class 'bs4.BeautifulSoup'
  2. <class 'bs4.element.Comment'
  3.  hello comment code  

2.遍歷文檔樹

以上內容講解完 4 個對象后,下面的知識講解遍歷文檔樹和搜索文檔樹以及 BeatifulSoup 常用的函數。在 BeautifulSoup 中,一個標簽(Tag)可能包含多個字符串或其它的標簽,這些稱為這個標簽的子標簽。

咱們繼續用以下超文本協議來講解:

  1. <!DOCTYPE html> 
  2. <html lang="en"
  3. <head> 
  4.     <title>BeautifulSoup 技術詳解</title> 
  5. </head> 
  6. <body> 
  7. <p class="title">Hello</p> 
  8. <p class="con">Python 技術</p> 
  9.  
  10. <a href="https://www.baidu.com" class="xiaodu" id="l1">ddd</a> 
  11.  
  12. </body> 
  13. </html> 
  • 子節點

一個Tag可能包含多個字符串或其它的Tag,這些都是這個Tag的子節點,Beautiful Soup 提供了許多操作和遍歷子節點的屬性。

例如獲取標簽子節點內容:

  1. # coding=utf-8 
  2. from bs4 import BeautifulSoup 
  3. soup = BeautifulSoup(open('test.html','rb'), "html.parser"
  4. tag = soup.title 
  5.  
  6. print(soup.head.contents) 

輸出結果如下:

  1. ['\n', <title>BeautifulSoup 技術詳解</title>, '\n'

注意: Beautiful Soup中字符串節點不支持這些屬性,因為字符串沒有子節點。

節點內容

如果標簽只有一個子節點,需要獲取該子節點的內容,則需要使用 string 屬性,以此輸出節點的內容:

  1. # coding=utf-8 
  2. from bs4 import BeautifulSoup 
  3. soup = BeautifulSoup(open('test.html','rb'), "html.parser"
  4. tag = soup.title 
  5.  
  6. print(soup.head.string) 
  7.  
  8. print(soup.title.string) 

輸出結果如下:

  1. None 
  2. BeautifulSoup 技術詳解 
  • 父節點

調用 parent 屬性定位父節點,如果需要獲取節點的標簽名則使用 parent.name。實例如下:

  1. # coding=utf-8 
  2. from bs4 import BeautifulSoup 
  3. soup = BeautifulSoup(open('test.html','rb'), "html.parser"
  4. tag = soup.title 
  5.  
  6. p = soup.p 
  7. print(p.parent) 
  8. print(p.parent.name
  9.  
  10. content = soup.head.title.string 
  11. print(content.parent) 
  12. print(content.parent.name

輸出結果如下:

  1. <body> 
  2. <p class="title">Hello</p> 
  3. <p class="con">Python 技術</p> 
  4. <a class="xiaodu" href="https://www.baidu.com" id="l1">ddd</a> 
  5. </body> 
  6. body 
  7. <title>BeautifulSoup 技術詳解</title> 
  8. title 
  • 兄弟節點

兄弟節點是指和本節點位于同一級的節點,其中 next_sibling 屬性是獲取該節點的下一個兄弟節點,previous_sibling 則與之相反,取該節點的上一個兄弟節點,如果節點不存在,則返回 None。

  1. print(soup.p.next_sibling) 
  2. print(soup.p.prev_sibling) 
  • 前后節點

調用屬性 next_element 可以獲取下一個節點,調用屬性 previous_element 可以獲取上一個節點,代碼舉例如下:

  1. print(soup.p.next_element) 
  2. print(soup.p.previous_element) 

3.搜索文檔樹

BeautifulSoup 定義了很多搜索方法,例如 find() 和 find_all(); 但find_all()是最常用的一種方法,而更多的方法與遍歷文檔樹類似,包括父節點、子節點、兄弟節點等,使用find_all()方法的代碼如下:

  1. # coding=utf-8 
  2. from bs4 import BeautifulSoup 
  3. soup = BeautifulSoup(open('test.html','rb'), "html.parser"
  4. tag = soup.title 
  5.  
  6. urls = soup.find_all('p'
  7. for u in urls: 
  8.     print(u) 

輸出結果如下:

  1. <p class="title">Hello</p> 
  2. <p class="con">Python 技術</p> 

使用 find_all() 可以查找到想要查找的文檔內容。

總結

至此,阿醬理解范圍內的 BeautifulSoup 基礎知識及用法基本上已經概述完畢,有差池的地方希望大家海涵,我們一起努力前行。

參考

 

BeautifulSoup 官網https://blog.csdn.net/Eastmount

 

責任編輯:武曉燕 來源: Python技術
相關推薦

2020-09-11 10:55:10

useState組件前端

2021-08-09 14:40:02

物聯網IOT智能家居

2023-02-10 08:44:05

KafkaLinkedIn模式

2021-02-19 23:08:27

軟件測試軟件開發

2018-11-23 11:17:24

負載均衡分布式系統架構

2021-02-28 09:47:54

軟件架構軟件開發軟件設計

2022-09-01 15:26:45

物聯網人工智能傳感器

2022-04-24 09:00:00

滲透測試安全數字時代

2022-12-30 11:24:21

2018-06-15 23:00:56

2022-07-15 14:58:26

數據分析人工智能IT

2022-08-27 12:15:51

Linux Mint操作系統

2020-10-14 08:04:28

JavaScrip

2021-05-28 07:12:59

Python閉包函數

2017-04-29 09:00:14

Linux程序進程

2023-12-28 16:33:57

2022-03-14 16:50:54

物聯網IoT云計算

2019-05-22 15:10:43

2023-12-19 09:07:05

Android開發內存

2020-12-22 11:04:05

人工智能AI機器學習
點贊
收藏

51CTO技術棧公眾號

欧美日韩亚洲国产一区| 国产高清视频一区| 在线成人激情黄色| 亚洲制服中文字幕| 国产后进白嫩翘臀在线观看视频| 成人污污视频在线观看| 日韩av电影院| 少妇久久久久久被弄高潮| 一区二区在线视频观看| 在线免费亚洲电影| 91九色国产ts另类人妖| 色哟哟在线观看| 久久福利资源站| 2018国产精品视频| 国产大学生自拍| 国产精品一区二区av交换| 在线播放中文字幕一区| 欧美a v在线播放| 精产国品自在线www| ww久久中文字幕| 91中文在线视频| 无码人妻av免费一区二区三区 | 一区二区三区四区欧美| 欧美 日韩 国产 成人 在线| 秋霞午夜鲁丝一区二区老狼| 欧美国产日产韩国视频| 国产又粗又猛又爽又黄的视频四季 | 成人黄色免费网站在线观看| 亚洲精品男人的天堂| 欧美高清一区| 日韩一级黄色av| 国产呦小j女精品视频| 综合中文字幕| 4hu四虎永久在线影院成人| 国产日韩成人内射视频| 超级白嫩亚洲国产第一| 亚洲精品久久7777| 宅男av一区二区三区| 久久av少妇| 99国产精品久久久久| 成人精品一二区| 国产精品久久久久久久久毛片| 久久久久久亚洲精品杨幂换脸| 欧美成人午夜激情在线| 韩国一级黄色录像| 日韩在线观看| 日韩中文在线视频| 97在线观看免费视频| 国产中文字幕一区二区三区| 国产视频精品免费播放| 国产网站无遮挡| 精品亚洲自拍| 亚洲国产精品免费| 麻豆短视频在线观看| 中文字幕一区日韩精品| 精品国产污网站| 国产+高潮+白浆+无码| 成人香蕉社区| 亚洲高清不卡av| 成熟妇人a片免费看网站| 伊色综合久久之综合久久| 日韩欧美一二三| 亚洲熟女一区二区三区| 国内精品国产成人国产三级粉色| 亚洲精品一区二区三区蜜桃下载| 逼特逼视频在线观看| 精品福利一区| 精品视频久久久久久| 黄色a一级视频| 国产影视精品一区二区三区| 伊人伊成久久人综合网站| 日韩精品电影一区二区三区| 日韩一区二区中文| 欧美成人免费在线观看| 久久精品国产亚洲AV无码男同| 国自产拍偷拍福利精品免费一| 欧美成人免费va影院高清| 国产亚洲欧美久久久久| 国产精品久久久免费| 国产精品久久一区主播| 国产精品系列视频| 粉嫩13p一区二区三区| 精品久久久久久中文字幕动漫| 亚洲色图另类小说| 中文字幕国产一区| 最新视频 - x88av| av中文资源在线资源免费观看| 欧美日韩一区二区三区| 久久午夜夜伦鲁鲁一区二区| 亚洲精品一区av| 欧美成人精精品一区二区频| 亚洲黄色免费在线观看| 大色综合视频网站在线播放| 免费成人高清视频| xxxx.国产| 久久国产精品免费| 国产成人精品福利一区二区三区 | www..com日韩| 日韩精品免费观看视频| 日韩三级中文字幕| 免费看污片网站| 一区二区三区中文| 全球成人中文在线| 国产偷拍一区二区| 久久久久久99久久久精品网站| a级网站在线观看| 毛片免费看不卡网站| 91精品婷婷国产综合久久竹菊| 欧美xxxx×黑人性爽| 99九九热只有国产精品| 51久久精品夜色国产麻豆| 夜夜嗨av禁果av粉嫩avhd| av动漫一区二区| 一区二区不卡视频| 在线观看的黄色| 欧美一区二区三区免费观看视频 | 刘亦菲毛片一区二区三区| 国产日本欧美一区二区| 人妻av中文系列| 95精品视频| 亚洲系列中文字幕| 国产在线综合网| 国产精品资源网| 天天综合色天天综合色hd| 国产ktv在线视频| 4438x亚洲最大成人网| 五月天精品在线| 国产精品亚洲综合色区韩国| 5g国产欧美日韩视频| 日本在线www| 91久久精品午夜一区二区| 美女搡bbb又爽又猛又黄www| 欧美.日韩.国产.一区.二区| 国产精品久久久久不卡| 三级视频网站在线| 亚洲一区二区精品视频| 亚洲天堂一区二区在线观看| 成人av国产| 国产精品美女久久久久久免费| 午夜成人免费影院| 亚洲成人免费在线观看| 中文字幕在线播放一区二区| 亚洲成人日韩| 成人中心免费视频| 麻豆视频网站在线观看| 欧美人与z0zoxxxx视频| 99精品全国免费观看| 视频在线观看一区| 人禽交欧美网站免费| 丝袜美腿一区| 亚洲欧美日韩一区在线| 亚洲男人的天堂在线视频| 成人激情免费网站| 91免费黄视频| 乱亲女h秽乱长久久久| 97免费中文视频在线观看| 亚洲 美腿 欧美 偷拍| 精品国产成人在线| 内射中出日韩无国产剧情| 国产视频一区在线观看一区免费| 精品一区二区国产| 欧美男男激情videos| 亚洲美女性生活视频| aaa在线视频| 国产精品久久久久一区二区三区共| 亚洲国产成人va在线观看麻豆| 色综合咪咪久久网| 亚洲综合在线做性| 欧美hdxxxxx| 日韩精品久久久久| 在线观看 亚洲| 国产精品久久久久久久久免费丝袜 | 中文字幕av一区中文字幕天堂 | 欧美无砖专区免费| 日韩深夜福利| 国产精品盗摄久久久| 老司机精品视频在线观看6| 日韩欧美国产三级| 中日韩黄色大片| 久久久久久**毛片大全| 91亚洲精品久久久蜜桃借种| 欧美精品一卡| 欧美人与性禽动交精品| 国产91亚洲精品久久久| 色综合久久中文字幕综合网小说| 国产 日韩 欧美 综合| 色哟哟在线观看一区二区三区| 欧美福利在线视频| 国产成人av电影免费在线观看| 国产视频一视频二| 久久亚洲国产| 国产一区二区黄色| 97人人做人人爽香蕉精品| 九九精品在线视频| 黄色小视频在线观看| 日韩午夜精品视频| 蜜臀精品一区二区三区| 一区二区三区资源| 97人妻人人揉人人躁人人| 国产激情偷乱视频一区二区三区| 男人和女人啪啪网站| 99久久久久国产精品| 久久国产精品一区二区三区四区| 中文字幕日本一区| 欧美影院久久久| 在线中文字幕视频观看| 国产亚洲精品va在线观看| 亚洲精选一区二区三区| 欧美亚洲综合色| 成人午夜视频精品一区| 亚洲色图欧洲色图| 亚洲综合色一区| 国产91丝袜在线播放九色| 日韩不卡一二三| 亚洲欧美清纯在线制服| 91国在线高清视频| 色小子综合网| 日韩久久久久久久久久久久久| 北条麻妃一区二区三区在线观看| 国产在线拍揄自揄视频不卡99| 人在线成免费视频| 欧美激情国产日韩精品一区18| 美女写真理伦片在线看| 亚洲视频在线播放| 天堂av手机版| 欧美成人一级视频| 国产精品伦理一区| 欧美日韩免费高清一区色橹橹| 欧美一区二区三区四| 亚洲成av人影院在线观看网| 亚洲国产美女视频| 国产精品久久久久久户外露出| 男人操女人动态图| 26uuu国产一区二区三区| 国产 xxxx| 成人黄色在线视频| 精品人妻一区二区免费| 国产suv一区二区三区88区| 爱豆国产剧免费观看大全剧苏畅| 久久亚洲美女| 99久久激情视频| 午夜亚洲视频| 成年人观看网站| 国产视频久久| 日韩av片在线看| 欧美中文日韩| 成人免费视频久久| 奇米在线7777在线精品| 在线观看免费视频高清游戏推荐| 日本怡春院一区二区| 男人搞女人网站| 日韩高清不卡在线| 成人在线观看黄| 日本不卡免费在线视频| 亚洲人视频在线| 精品影视av免费| 国产成人强伦免费视频网站| 激情五月婷婷综合网| 中文字幕一区二区三区四| 国内精品久久久久影院薰衣草| 日韩 国产 一区| 国产精品一级片| 国产精品果冻传媒| 91碰在线视频| 亚洲最大成人综合网| 中文字幕一区免费在线观看| 亚洲精品久久久久久国| 亚洲综合激情另类小说区| 久久精品国产亚洲AV无码男同| 欧美日韩中文字幕在线| 欧美在线观看不卡| 欧美三级电影在线看| 国产麻豆精品一区| 亚洲精品一区二区三区香蕉 | 日本免费一区二区三区视频| 国产98在线|日韩| 女优一区二区三区| 亚洲欧洲中文| 国产一区日韩欧美| 久久久免费视频网站| 免费视频一区二区| 又黄又爽又色的视频| 99国产精品国产精品毛片| 成人小视频免费看| 亚洲午夜影视影院在线观看| 亚洲欧美自拍视频| 91精品国产入口| 天堂在线中文| 久久激情五月丁香伊人| 91超碰在线播放| 国产精品国产三级国产aⅴ浪潮| 91精品网站在线观看| 蜜桃久久影院| 亚洲国产精品综合久久久| 国产精品自拍片| 久草中文综合在线| 亚洲中文字幕一区| 亚洲欧美在线高清| 欧美福利视频一区二区| 91麻豆精品国产91久久久使用方法| 无码国产伦一区二区三区视频| 中文字幕日韩在线观看| 免费高潮视频95在线观看网站| 成人看片人aa| 视频国产一区| 人人妻人人做人人爽| 极品尤物av久久免费看| 美女又爽又黄视频毛茸茸| 亚洲欧美日韩在线不卡| 四虎影院在线免费播放| 精品1区2区在线观看| 毛片在线不卡| 国产精品91在线观看| 久久九九热re6这里有精品| 正在播放一区| 三级亚洲高清视频| a级一a一级在线观看| 亚洲自拍与偷拍| 91久久精品国产91性色69| 亚洲欧美另类国产| 91九色在线播放| 97se亚洲综合在线| 51精产品一区一区三区| 亚洲色图38p| 久久婷婷国产综合精品青草| 日本少妇毛茸茸高潮| 欧美一区二区三区啪啪| 免费的黄网站在线观看| 国产精品免费福利| 神马影视一区二区| 国产免费成人在线| 91丝袜美腿高跟国产极品老师| 日本三级黄色大片| 日韩欧美电影一二三| 成人黄视频在线观看| 国产免费久久av| 日韩欧美午夜| 色播五月综合网| 国产精品午夜在线观看| 在线观看你懂的网站| 一区二区日韩精品| 视频在线日韩| 欧美最大成人综合网| 久久九九99| 欧美 日韩 国产 成人 在线观看| 狠狠综合久久av一区二区小说 | 色妞久久福利网| 国产精品诱惑| 亚洲一区二区三区午夜| 精品在线观看免费| 亚洲色婷婷一区二区三区| 日韩欧美一区二区不卡| 丰满大乳少妇在线观看网站| 国产精品午夜av在线| 亚洲激情一区| 久久亚洲AV成人无码国产野外| 欧美性色19p| 川上优的av在线一区二区| 国产精品爽爽ⅴa在线观看| 日韩欧美自拍| 亚洲男人天堂2021| 一区二区三区成人在线视频| 蜜臀av中文字幕| 欧美亚洲免费电影| av在线不卡免费观看| 精品久久久99| 一区二区三区欧美在线观看| 亚洲av无码乱码国产麻豆| 国内精品小视频| 精品在线手机视频| 91亚洲精品久久久蜜桃借种| 亚洲九九爱视频| 天堂在线视频免费| 国产999视频| 久久久久久久久久久久久久久久久久| 日韩av影视大全| 调教+趴+乳夹+国产+精品| 欧美日韩在线中文字幕| 国产欧美一区二区三区久久人妖 | 中文子幕无线码一区tr| 国产男男gay网站| 性金发美女69hd大尺寸| 欧美日韩国产传媒| 久草福利在线观看| 欧美性xxxxxxxxx| 在线观看免费黄色| 国产伦精品一区二区三区高清| 午夜亚洲福利在线老司机| 日韩在线一卡二卡| 亚洲国产精品久久久久秋霞不卡 | 欧美性生活影院| 欧美xxxx视频| 色播亚洲视频在线观看| 懂色av一区二区三区免费看| 欧美人一级淫片a免费播放| 欧美另类第一页| 欧美偷拍自拍| 秘密基地免费观看完整版中文| 欧美在线视频不卡| 成人影音在线|