本章介绍怎么根据id与class查找标签。假设有下面的HTML文档:
<html> <head> <title>A simple example page</title> </head> <body> <div> <p class="inner-text first-item" id="first"> First paragraph. </p> <p class="inner-text"> Second paragraph. </p> </div> <p class="outer-text first-item" id="second"> <b> First outer paragraph. </b> </p> <p class="outer-text"> <b> Second outer paragraph. </b> </p> </body> </html>
可以通过URL https://kevinhwu.github.io/demo/python-scraping/simple2.html 访问上面的文档。让我们先下载页面并创建一个BeautifulSoup对象:
import requests from bs4 import BeautifulSoup page = requests.get("https://kevinhwu.github.io/demo/python-scraping/simple2.html") soup = BeautifulSoup(page.content, 'html.parser')
根据class查找标签
根据id与class查找标签,使用的仍旧是find_all
方法。下面的例子,查找类是outer-text
的p
标签:
soup.find_all('p', class_='outer-text')
输出
[<p class="outer-text first-item" id="second"> <b> First outer paragraph. </b> </p>, <p class="outer-text"> <b> Second outer paragraph. </b> </p>]
在下面的例子中,查找任何类是outer-text
的标签:
soup.find_all(class_="outer-text")
输出
[<p class="outer-text first-item" id="second"> <b> First outer paragraph. </b> </p>, <p class="outer-text"> <b> Second outer paragraph. </b> </p>]
根据id查找标签
另外,也可以通过id
查找标签:
[<p class="inner-text first-item" id="first"> First paragraph. </p>]
输出
[<p class="inner-text first-item" id="first"> First paragraph. </p>]