python爬蟲 之 BeautifulSoup庫入門
BeautiSoup類的基本元素及用bs4遍歷HTML基本方法
1,BeautifulSoup類的基本元素
有5種基本元素:
Tag: 標籤,最基本的資訊組織單元, .
Name: 標籤名字, ..name :返回一個字串
Attributes: 標籤的屬性, ..attrs :返回一個字典型別
NavigableString:標籤中的字串, ..string :返回一個字串
Comment: 標籤中的註釋資訊,會在 ..string中獲得。
比如現在有一個HTML文件:
The demo python introduces several python courses.
Python is a wonderful general-purpose programming language. You can learn Python from novice to professional by tracking the following courses:
Basic Python
and
Advanced Python.
This is not a Comment.
我們對此文件用BS類的基本元素進行應用:
先煲一鍋湯:>>> soup = BeautifulSoup(html, "html.parser")
用 .獲得一個標籤的全部資訊:
如:>>> soup.p
用.name獲得這個標籤的名字:
如:>>> p.name
Tag屬性還有另外一個重要的用法, 就是當我們對一個標籤內的子節點進行遍歷時,可能會有不是標籤的節點,比如’\n’等,此時可利用bs4庫提供的bs4.element.Tag屬性來進行甄別。
用到 isinstance()方法。比如:isinstance(soup.a, bs4.element.Tag)
用.attrs獲得這個標籤的屬性:
如>>> soup.a.attrs
可以對a標籤的具體屬性進行獲得:>>> soup.a['href']
用.string獲得這個標籤中的字串資訊:
如:>>> soup.p.string:
我們看到.string可以跨越標籤,直接獲得標籤內的字串。
但是: 當外層標籤內含有多個平行的內層標籤時,就不行了:
比如: 鄭州人流醫院哪家好
此p標籤內有多個平行的a標籤,直接用p.string返回為None
最後,說說Comment屬性
可用>>> soup.b.string來獲得註釋的資訊:
二者型別是不同的,因此可用bs4庫的 isinstance(, bs4.element.Comment)來過濾註釋資訊,或者獲得註釋資訊。
2,用BeautifulSoup遍歷HTML的方式
1,下行遍歷:
3個屬性:
1,.contents : 子節點的列表,將所有兒子節點存入列表(還包括所有的\n)
2,.children : 子節點的迭代型別,與.contents類似,用於迴圈遍歷兒子節點。
3, .descendants : 包含所有的子孫節點。與children一樣,只能用於迭代。
2,上行遍歷:
2個屬性:
1,.parent : 節點的父親標籤
2,.parents: 節點先輩的迭代型別,用於迴圈遍歷先輩節點(所有的先輩)。
3,平行遍歷:
4個平行遍歷屬性:(需要發生在同一個父親節點下的各節點間。)
1,.next_sibling : 返回按照HTML文字順序的下一個平行節點標籤。
2,.previous_sibling: 返回。。的上一個平行節點標籤。
3,.next_siblings: 迭代型別, 返回按照順序的所有平行節點標籤。
4,.previous_sibings:迭代型別 。。。。。。。。。
3,BeautifulSoup的格式化輸出與編碼:
prettify()函式:能夠為HTML標籤,文字增加換行符,
1,世界上的所有資訊都可以用3中標記形式進行標記。
XML 格式: 類似於HTML,標籤形式。
JSON: 有型別的鍵值對 key:value 如:
"name" : "北京" -----;一個鍵值對
"name" : ["hello", "hello"] -----: 一個鍵對應多個值1
"name" : {"subkey" : "subvalue"} -----:一個鍵值對作為一個值對應於一個鍵
YAML: 無型別的鍵值對 : key : value
name : 北京
name :
-newName : 北京
-newName : 上海 (並列)
name :
newname : hello (巢狀)
比較::
XML用<>標記 : 擴充套件性好,但是繁瑣。 Internet上的資訊互動與傳遞,多用XML。
JSON用“” : 資訊有型別,適合程式處理(js),較XML整潔。(無法註釋) 用於移動應用雲端和節點的資訊通訊。用在對程式介面處處理。
YAML用縮排 : 資訊無型別, 文字資訊比例最高,可讀性好。各類系統的配置檔案,有註釋易讀。
2,資訊的提取方式
1,完整解析資訊的標記形式,再提取關鍵資訊。
2,無視標記形式,直接搜尋關鍵資訊。
3,融合方法。
如:提取HTML中所有的URL標籤。
思路):
1,搜尋所有的標籤
2,解析標籤格式,提取href後的連結內容。
3,find_all()方法
最常用的查詢方法
<>.find_all(name, attrs, recursive, string, **kwargs)
返回一個列表型別,儲存查詢的結果.
使用方法:
可單獨指定name,attrs, recursive, string等
標籤名, 屬性(或字典形式的鍵值對), 預設為對子孫節點搜尋, 字串。
(..) 等價於 .find_all(..)
soup(..) 等價於 soup.find_all(..)
<>.find()搜尋只返回一個結果,字串結果。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69945560/viewspace-2667500/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Python爬蟲之BeautifulSoup庫Python爬蟲
- Python爬蟲之BeautifulSoupPython爬蟲
- python爬蟲常用庫之BeautifulSoup詳解Python爬蟲
- 爬蟲入門系列(四):HTML 文字解析庫 BeautifulSoup爬蟲HTML
- python 小爬蟲 DrissionPage+BeautifulSoupPython爬蟲
- Python爬蟲入門Python爬蟲
- python入門之爬蟲工具有哪些?Python爬蟲
- 如何入門 Python 爬蟲?Python爬蟲
- python-爬蟲入門Python爬蟲
- Python爬蟲進階之JS逆向入門Python爬蟲JS
- 學渣講爬蟲之Python爬蟲從入門到出門(第三講)爬蟲Python
- 【爬蟲】python爬蟲從入門到放棄爬蟲Python
- 什麼是Python爬蟲?python爬蟲入門難嗎?Python爬蟲
- Python爬蟲入門(2):爬蟲基礎瞭解Python爬蟲
- 爬蟲入門基礎-Python爬蟲Python
- python3 爬蟲入門Python爬蟲
- Python爬蟲入門指導Python爬蟲
- Python爬蟲入門專案Python爬蟲
- python 中BeautifulSoup入門Python
- Python爬蟲建站入門手記(3):採集入庫Python爬蟲
- 爬蟲入門爬蟲
- Python爬蟲入門,8個常用爬蟲技巧盤點Python爬蟲
- python爬蟲:使用BeautifulSoup修改網頁內容Python爬蟲網頁
- Python爬蟲群作業-Week3-BeautifulSoupPython爬蟲
- Python 爬蟲實戰(一):使用 requests 和 BeautifulSoupPython爬蟲
- python入門與進階篇(七)之原生爬蟲Python爬蟲
- Python3爬蟲入門(一)Python爬蟲
- Python爬蟲入門(1):綜述Python爬蟲
- 為什麼學習python及爬蟲,Python爬蟲[入門篇]?Python爬蟲
- Python爬蟲入門【5】:27270圖片爬取Python爬蟲
- Node 爬蟲入門爬蟲
- Python 爬蟲進階篇-利用beautifulsoup庫爬取網頁文章內容實戰演示Python爬蟲網頁
- Python爬蟲入門教程導航帖Python爬蟲
- Python3 爬蟲快速入門攻略Python爬蟲
- Python 網路爬蟲入門詳解Python爬蟲
- Python網路爬蟲4 - scrapy入門Python爬蟲
- Python爬蟲入門【9】:圖蟲網多執行緒爬取Python爬蟲執行緒
- 帶你入門Python爬蟲,8個常用爬蟲技巧盤點Python爬蟲