beautifulsoup的系統性講解

2021-10-02 16:46:38 字數 1921 閱讀 5560

beautifulsoup是一種較為常用的解析庫,如果你覺得用正規表示式來解析網頁過於繁瑣,需要寫較長的 正規表示式,那麼beautifulsoup將是你的好選擇。

首先選擇方法主要分為標籤選擇css選擇器選擇,可以根據個人喜好來選擇使用,當然我更喜歡css選擇。更便捷也更直接。

from bs4 omport beautifulsoup

soup=beautifulsoup(html,'lxml')

其中html為一段html**,用來作為解析物件,就是將html**轉化為beautifulsoup物件。

而lxml就是解析器,除了lxml,還有xml,html.parser,以及html5.lib。不過我更喜歡用lxml。

print(soup.prettify()) '''格式化補全後輸出'''print(soup.p.attrs['name']) '''輸出p標籤的name屬性值'''print(soup.p.string) '''輸出第乙個p標籤的內容』『』print(soup.head.title.string) '''巢狀選擇'''print(soup.p.contents) '''輸出子節點,輸出的是列表,如果用child,輸出的是乙個迭代器,需要用enumerate方法輸出'''print(soup.p.descendants) '''輸出子孫節點'''print(soup.p.parents) '''輸出父節點'''print(soup.p.parents) '''輸出祖先節點'''print(soup.p.siblings) '''輸出兄弟節點,除此以外,兄弟節點還可以用next和previous方法,可以通過 print(list(ennumerate(soup.p.previous)))這樣的列舉方法來輸出。

print

(soup.find_all(

'ul'))

'''輸出所有的ul標籤'''

print

(soup.find_all(id=

'list-1'

)'''輸出所有屬性為id='list-1'的標籤 注意,若為class屬性,需要鍵入class_ 因為class是關鍵字 '''

print

(soup.p.find_next_sibling())

print

(soup.p.find_next_siblings())

print

(soup.p.find_all_next())

'''返回節點後所有符合條件的節點'''

print

(soup.p.find_next())

'''返回乙個符合條件的節點'''

可以通過直接select()方法直接鍵入css屬性即可完成查詢。

print

(soup.select(

.panel .panel_heading)

)'''輸出class="panel"的標籤下class="panel_heading"的標籤,注意寫的時候中間有空格'''

print

(soup.select(

'ul li'))

'''輸出ul下的li標籤'''

print

(ul.attrs[

'id'])

'''輸出ul的id屬性值'''

print

(li.get_text())

'''輸出li的內容'''

beautifulsoup的基礎知識就是這些,如果想進一步的深入學習,可以檢視beautifulsoup的官方**,和檢視css手冊來進一步學習。

Python的BeautifulSoup庫的使用

python爬蟲的beautifulsoup庫的使用 以下為爬去985高校的例子 import requests from bs4 import beautifulsoup 從bs4中引入beautifulsoup庫 import re url r requests.get url soup bea...

(一)BeautifulSoup的安裝

確保必要的工作 已經安裝好python和pip 執行cmd,在命令列中輸入一下命令即可安裝成功。pip install beautifulsoup4 由於本人使用的是ubuntu,即主要講解的是ubuntu下的安裝,其實其他發行版本的安裝都是差不多的。安裝python 由於在ubuntu的發行版本中...

BeautifulSoup庫的使用

解析器 使用方法 優勢劣勢 python標準庫 beautifulsoup markup,html.parser python的內建標準庫 執行速度適中 文件容錯能力強 python 2.7.3 or 3.2.2 前的版本中文容錯能力差 lxml html 解析器 beautifulsoup mar...