BeautifulSoup中的選擇器使用

2021-07-29 22:59:41 字數 2484 閱讀 3565

學python爬蟲時,發現對選擇器很不熟悉,所以在這兒做做筆記。

s1 通過tag標籤逐層查詢:

soup.select("body a")

# [class="sister"

href=""

id="link1">elsiea>,

# class="sister"

href=""

id="link2">laciea>,

# class="sister"

href=""

id="link3">tilliea>]

soup.select("html head title")

# [the dormouse's storytitle>]

2 找到某個tag標籤下的直接子標籤 :

soup.select("head > title")

# [the dormouse's story]

soup.select("p > a")

# [elsiea>,

# laciea>,

# tilliea>]

soup.select("p > a:nth-of-type(2)")

# [laciea>]

soup.select("p > #link1")

# [elsiea>]

soup.select("body > a")

#

3 找到兄弟節點標籤:

soup.select("#link1 ~ .sister")

# [laciea>,

# tilliea>]

soup.select("#link1 + .sister")

# [laciea>]

4 通過css的類名查詢:

soup.select(".sister")

# [elsiea>,

# laciea>,

# tilliea>]

soup.select("[class~=sister]")

# [elsiea>,

# laciea>,

# tilliea>]

5 通過tag的id查詢:

soup.select("#link1")

# [elsiea>]

soup.select("a#link2")

# [laciea>]

6 同時用多種css選擇器查詢元素:

soup.select("#link1,#link2")

# [elsiea>,

# laciea>]

7 通過是否存在某個屬性來查詢:

soup.select('a[href]')

# [elsiea>,

# laciea>,

# tilliea>]

8 通過屬性的值來查詢:

# [elsiea>]9 通過語言設定來查詢:

multilingual_markup = """

lang="en">hellop>

lang="en-us">howdy, y'allp>

lang="en-gb">pip-pip, old fruitp>

lang="fr">bonjour mes amisp>

"""multilingual_soup = beautifulsoup(multilingual_markup)

multilingual_soup.select('p[lang|=en]')

# [lang="en">hellop>,

# lang="en-us">howdy, y'allp>,

# lang="en-gb">pip-pip, old fruitp>]

10 返回查詢到的元素的第乙個:

soup.select_one(".sister")

# elsiea>

對於熟悉css選擇器語法的人來說這是個非常方便的方法.beautiful soup也支援css選擇器api, 如果你僅僅需要css選擇器的功能,那麼直接使用 lxml 也可以, 而且速度更快,支援更多的css選擇器語法,但beautiful soup整合了css選擇器的語法和自身方便使用api.

Python中Beautifulsoup學習筆記二

1 用tag獲取相應 塊的剖析樹 contents屬性是乙個列表,裡面儲存了該剖析樹的直接兒子。如 1 html soup.contents 0 2 head html.contents 0 3 body html.contents 1 2 用contents,parent,nextsibling,...

Beautiful Soup在爬蟲中的基本使用語法

beautiful soup是python 的乙個html 或 xml的解析庫,借助網頁的結構和屬性特徵來解析網頁,便於使用者抓取資料。beautiful soup能夠自動將輸入的文件轉化為unicode,輸出的文件轉換為utf 8,這大大提高了文件提取的效率。基本用法如下 beautifulsou...

關於BeautifulSoup中字元的編碼

在使用beautifulsoup解析html檔案的過程中,經常使用到類似如下的語句 soup beautifulsoup html for string in soup.strings string string.strip 注意,上述 中,沒有對string的編碼進行任何的設定,所以string的...