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标签的所有后代节点
希望以上信息对您有所帮助!