精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

3d动漫一区二区三区在线观看| 天天干,夜夜操| 婷婷亚洲最大| 日韩欧美区一区二| 欧美 日韩 国产 高清| 精品视频二区| 国产麻豆精品theporn| 国模精品视频一区二区三区| 中文字幕xxx| 日韩电影精品| 精品久久久久久中文字幕| 日本中文不卡| 日本韩国免费观看| 美女免费视频一区二区| 久久久久国色av免费观看性色| 性少妇bbw张开| 国产精品美女久久久久人| 五月婷婷久久丁香| 一本色道久久综合亚洲二区三区| 成人乱码一区二区三区| 日韩在线一二三区| 久久久久久久久久久久av| 人妻少妇无码精品视频区| 日韩精品一区二区三区中文| 91久久久免费一区二区| www.日本在线视频| 午夜视频成人| 久久久无码精品亚洲日韩按摩| 99久久99久久精品国产片| 久久精品五月天| 国内自拍视频一区二区三区| 中文字幕久精品免费视频| 亚洲精品无码一区二区| 成人动漫视频在线观看| 日本久久精品电影| heyzo亚洲| 人人超在线公开视频| 中文字幕乱码亚洲精品一区| 久久精品丝袜高跟鞋| 国产高清免费av| 美女爽到高潮91| 国产成人亚洲综合| 91丝袜一区二区三区| 亚洲欧美一区在线| 久久精品这里热有精品| 手机免费观看av| 欧美理论在线播放| 亚洲欧美日韩在线高清直播| 亚洲一区和二区| 日韩高清在线观看一区二区| 欧美精品 日韩| 亚洲美女爱爱视频| 成人在线视频观看| 日本精品一区二区三区四区的功能| 精品国产一区三区| 大香伊人久久| 午夜激情综合网| 黄色一级片在线看| heyzo在线欧美播放| 99久久99热这里只有精品| 日韩精品中文字幕在线观看| 国产免费a级片| aiai久久| 亚洲精品97久久| 特大黑人巨人吊xxxx| 奇米影视777在线欧美电影观看 | 国产又大又长又粗| 久久99精品久久久| 91探花福利精品国产自产在线| 一级黄色大片网站| 激情六月婷婷综合| 成人av资源| 欧美一级淫片免费视频魅影视频| 成人免费视频国产在线观看| 成人午夜影院在线观看| 欧美性受xxxx狂喷水| 99久久久免费精品国产一区二区| 精品日本一区二区三区在线观看| 五月天婷婷在线播放| 91麻豆精品秘密| 热re99久久精品国产99热| 第九色区av在线| 国产精品高潮呻吟| 免费一级淫片aaa片毛片a级| caoporn视频在线| 色综合久久99| 在线免费黄色网| 成人线上播放| 亚洲一区二区久久| 四虎永久免费在线| 国产日韩一区二区三区在线| 国产精品露脸av在线| 国产模特av私拍大尺度| 成人国产一区二区三区精品| 欧美精品七区| www久久日com| 欧美日韩精品在线观看| 天天干天天草天天| 国产精品成人自拍| 中文字幕亚洲情99在线| 欧美一级高潮片| 日本成人在线不卡视频| 成人在线免费网站| yourporn在线观看中文站| 一区二区三区在线观看网站| 免费黄色日本网站| 精品一区二区三区在线观看视频| 日韩不卡中文字幕| 手机在线免费看片| 美女精品网站| 高清日韩一区| 蝌蚪视频在线播放| 亚洲激情男女视频| 亚洲 欧美 另类人妖| 国产精品一区二区中文字幕| 日韩中文在线中文网在线观看| 久久久久久激情| 麻豆视频观看网址久久| 精品日本一区二区三区在线观看| www久久日com| 欧美日韩不卡在线| 免费黄色在线视频| 91久久久久| 999视频在线观看| 天堂资源在线中文| 色哟哟亚洲精品| 中文字幕人妻一区二区三区| 在线精品国产| 成人女保姆的销魂服务| 国产视频三级在线观看播放| 精品欧美一区二区三区| 性猛交╳xxx乱大交| 亚洲澳门在线| 国产男人精品视频| av大片在线看| 日本韩国欧美国产| 国产成人av一区二区三区不卡| 欧美日韩亚洲国产精品| 91精品视频在线播放| 福利片在线观看| 一本大道久久a久久综合| 中国av免费看| 亚洲永久字幕| 欧美成人第一区| 国产高清中文字幕在线| 亚洲а∨天堂久久精品9966| 欧美精品一区二区蜜桃| 国产精品一卡二卡在线观看| 亚洲综合激情五月| 亚州精品国产| 美女精品视频一区| 99草在线视频| 一区二区免费看| 亚洲少妇一区二区三区| 国精品一区二区| 成人女人免费毛片| 精精国产xxx在线视频app| 日韩高清av一区二区三区| 日韩欧美亚洲视频| 91香蕉国产在线观看软件| 国产91对白刺激露脸在线观看| 婷婷综合成人| 国产精品成人一区二区三区吃奶| 精品亚洲成a人片在线观看| 91福利在线导航| 日本爱爱小视频| 国产乱理伦片在线观看夜一区 | 日本最黄一级片免费在线| 欧美丝袜第三区| 破处女黄色一级片| a亚洲天堂av| 国产a视频免费观看| 欧美精品羞羞答答| 亚洲一区二区少妇| 99re6在线精品视频免费播放| 日韩成人高清在线| 丰满人妻一区二区三区四区| 国产精品久久久久aaaa樱花 | 亚洲国产精品无码观看久久| 精品国产一区二区三区成人影院| 欧美性视频网站| √新版天堂资源在线资源| 91精品免费在线| 三级黄色在线视频| 国产精品你懂的在线欣赏| 一级做a爱视频| 国产午夜久久| 亚洲最大免费| 精品国产18久久久久久洗澡| 国产精品国产亚洲伊人久久| 成人在线网址| 国产视频精品久久久| 一卡二卡三卡在线| 偷拍一区二区三区| 日韩一区二区三区四区视频| 懂色av中文一区二区三区| 日韩av播放器| 午夜精品国产| 日韩精彩视频| www国产精品| 国产精品吴梦梦| 国产夫妻在线播放| 久久精品久久久久久| 头脑特工队2在线播放| 欧美一区二视频| 精品国产xxx| 夜夜精品视频一区二区| 欧美激情久久久久久久| 成人午夜av电影| 成人不卡免费视频| 久久婷婷影院| 九九热只有这里有精品| 91视频久久| 日本在线播放一区| 欧美网色网址| 国产精品毛片va一区二区三区| 99热播精品免费| 日韩av电影国产| 电影在线观看一区| 九九热精品视频| 午夜视频成人| 国产亚洲精品久久久久久| 天天干天天干天天干| 精品欧美黑人一区二区三区| 亚洲在线精品视频| 在线视频国产一区| 日本在线播放视频| 亚洲成人免费av| 国产一级二级三级视频| 亚洲视频每日更新| 四虎影视一区二区| 国产日韩精品久久久| 欧美高清性xxxx| 99热在这里有精品免费| 久久人人爽人人片| 狠狠色狠狠色综合系列| 视频在线观看免费高清| 免费成人在线观看| 亚洲黄色a v| 日韩av在线发布| 免费裸体美女网站| 久久一区二区三区超碰国产精品| 97国产精东麻豆人妻电影| 亚洲精品影视| 极品美女扒开粉嫩小泬| 亚洲黄色一区| 欧美亚洲日本一区二区三区 | 中文字幕在线不卡一区| 香蕉久久久久久久| 中文字幕日韩精品一区| 又嫩又硬又黄又爽的视频| 中日韩免费视频中文字幕| 少妇太紧太爽又黄又硬又爽小说| 欧美国产精品一区二区三区| 亚洲无人区码一码二码三码的含义| 91看片淫黄大片一级在线观看| 91精品人妻一区二区三区蜜桃欧美| 久久一二三国产| 国产免费一区二区三区网站免费| 久久久久国产精品麻豆ai换脸 | 久久综合电影| 亚洲 欧洲 日韩| 欧美久久久久| 蜜臀精品一区二区| 亚洲制服av| 中文字幕永久视频| 激情欧美一区二区三区在线观看| 香蕉网在线视频| 成人动漫视频在线| 久久精品成人av| 中文字幕一区二区日韩精品绯色| 成人免费毛片xxx| 亚洲国产成人精品视频| 九九精品免费视频| 欧美日韩国产精选| 亚洲第一色视频| 亚洲免费精彩视频| 免费黄色电影在线观看| 欧美激情精品久久久久久变态| 黄色漫画在线免费看| 国产精品扒开腿做爽爽爽的视频| 日韩国产91| 精品国产一区二区三区免费 | 九九99久久精品在免费线bt| 成人欧美一区二区| 精品国产一区二区三区四区| 欧美日韩在线免费观看视频| 在线播放亚洲| 啊啊啊国产视频| 国产ts人妖一区二区| 人人妻人人藻人人爽欧美一区| 中文字幕一区二| 国语对白永久免费| 欧美一级欧美一级在线播放| 亚洲日本香蕉视频| 日韩在线视频中文字幕| 国产ktv在线视频| 91精品视频免费观看| 亚洲精品白浆高清| 麻豆视频传媒入口| 日韩国产高清影视| 野战少妇38p| 国产精品乱码人人做人人爱 | 久久黄色美女电影| 5252色成人免费视频| 欧美系列精品| 欧美精品一区二区视频| 国语精品一区| 亚洲精品第三页| 久久久久久夜精品精品免费| 黄色在线观看免费| 欧美日韩国产免费一区二区| 日本国产在线| 欧美精品18videos性欧| 另类一区二区三区| 日产精品一线二线三线芒果| 亚洲日本激情| 人妻激情偷乱视频一区二区三区| 国产午夜精品美女毛片视频| 国产一级免费av| 日韩欧美中文字幕精品| 日本三级在线播放完整版| 欧美一级电影免费在线观看| 澳门精品久久国产| 日本一级淫片演员| 久久www免费人成看片高清| 性欧美13一14内谢| 富二代精品短视频| 日韩中文字幕综合| 欧美国产亚洲精品久久久8v| 亚洲影视资源| 黄色网址在线免费看| 六月丁香婷婷久久| 国产又黄又粗又猛又爽的| 欧美色网一区二区| 91社区在线观看播放| 国产精品久久999| 欧美呦呦网站| 国产九九热视频| 中文字幕亚洲成人| 国产一区二区小视频| 日韩中文字幕网站| 4438五月综合| 丰满人妻一区二区三区53号| 国产麻豆成人传媒免费观看| 午夜爱爱毛片xxxx视频免费看| 欧美福利一区二区| 91精品久久久久久粉嫩| 99在线观看| 亚洲精品看片| 欧美熟妇一区二区| 欧美中文字幕一区| 秋霞a级毛片在线看| 成人精品一区二区三区| 欧美69视频| 中文字幕在线视频播放| 欧美日韩国产影院| 免费国产在线观看| 国产精品久久久久久久av电影| 成人在线视频免费观看| 精品亚洲视频在线| 一区二区三区不卡在线观看| 亚洲av无码一区二区三区dv| 欧美日韩xxxxx| 精品欧美午夜寂寞影院| 久艹视频在线免费观看| 久久综合九色综合久久久精品综合| h色网站在线观看| 日韩精品资源二区在线| 黄色网页在线免费观看| 亚洲va久久久噜噜噜| 欧美阿v一级看视频| 精品人妻伦一二三区久| 天天综合网 天天综合色| 噜噜噜噜噜在线视频| 国产精品白嫩初高中害羞小美女| 图片区亚洲欧美小说区| a级大片免费看| 欧美性猛交xxxx黑人猛交| 国产高清视频在线| 国产欧美精品久久久| 好看的日韩av电影| 亚洲精品乱码久久久久久久| 欧美在线视频日韩| 黄色网址在线免费观看| 久久伊人资源站| 欧美aaa在线| 精品一区免费观看| 国产亚洲精品久久久久动| 亚洲国产精品免费视频| 激情伊人五月天| 国产亚洲欧美色| 国产精品午夜福利| 色综合天天综合网国产成人网 | 日本一区网站| 国产精品白丝av| 99re这里只有精品在线| 久久夜精品va视频免费观看| 亚洲丝袜美腿一区| 中文av字幕在线观看|