1. 基本取值方法:
find()
: 查找第一个匹配的标签。soup.find('h1') # 查找第一个<h1>标签
find_all()
: 查找所有匹配的标签。soup.find_all('a') # 查找所有<a>标签
select()
: 使用CSS选择器查找标签。soup.select('.item') # 查找所有class为"item"的标签 soup.select('div > p') # 查找所有div标签下的p标签
2. 属性取值:
[]
: 使用[]
访问标签的属性。link = soup.find('a') link['href'] # 获取<a>标签的href属性值
get()
: 使用get()
方法获取属性值,如果属性不存在,则返回None。link.get('href') # 获取<a>标签的href属性值
3. 文本取值:
text
: 使用text
属性获取标签的文本内容。title = soup.find('title') title.text # 获取<title>标签的文本内容
string
: 使用string
属性获取标签的第一个文本内容,如果标签有多个文本内容,则只获取第一个。p = soup.find('p') p.string # 获取<p>标签的第一个文本内容
4. 嵌套结构取值:
find()
/find_all()
: 递归地查找嵌套标签。div = soup.find('div') p = div.find('p') # 查找div标签下的第一个p标签
select()
: 使用CSS选择器查找嵌套标签。soup.select('div > p') # 查找所有div标签下的p标签
5. 正则表达式取值:
re.findall()
: 使用正则表达式提取数据。import retext = soup.find('p').text re.findall(r'\d+', text) # 提取文本中的所有数字
6. 自定义函数取值:
- 定义函数: 可以定义自定义函数来简化数据提取过程。
def get_link_text(link):return link['href'], link.textlinks = soup.find_all('a') for link in links:href, text = get_link_text(link)print(f"Link: {href}, Text: {text}")
7. 额外的技巧:
attrs
: 使用attrs
属性获取标签的所有属性。link = soup.find('a') link.attrs # 获取<a>标签的所有属性
contents
: 使用contents
属性获取标签的所有子节点。div = soup.find('div') div.contents # 获取div标签的所有子节点
descendants
: 使用descendants
属性获取标签的所有后代节点。div = soup.find('div') div.descendants # 获取div标签的所有后代节点
希望以上信息对您有所帮助!