bs4取值技巧的详细介绍

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 re
    
    text = soup.find('p').text
    re.findall(r'\d+', text)  # 提取文本中的所有数字
    

6. 自定义函数取值:

  • 定义函数: 可以定义自定义函数来简化数据提取过程。
    def get_link_text(link):
        return link['href'], link.text
    
    links = 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标签的所有后代节点
    

希望以上信息对您有所帮助!

相关推荐

  1. bs4取值技巧详细介绍

    2024-07-18 02:00:03       22 阅读
  2. Python BS4解析库用法(超级详解)

    2024-07-18 02:00:03       39 阅读
  3. python爬虫-bs4

    2024-07-18 02:00:03       36 阅读
  4. OpenCV基于阈值分割技术详细介绍

    2024-07-18 02:00:03       38 阅读
  5. TensorFlow详细介绍

    2024-07-18 02:00:03       46 阅读
  6. FFmpeg详细介绍

    2024-07-18 02:00:03       34 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-18 02:00:03       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-18 02:00:03       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-18 02:00:03       58 阅读
  4. Python语言-面向对象

    2024-07-18 02:00:03       69 阅读

热门阅读

  1. Llama - Prompting

    2024-07-18 02:00:03       21 阅读
  2. 【SASS/SCSS(二)】模块化语法

    2024-07-18 02:00:03       26 阅读
  3. HTML5应用的安全防护策略与实践

    2024-07-18 02:00:03       22 阅读
  4. 23种设计模式

    2024-07-18 02:00:03       20 阅读
  5. tomcat如何进行调优?

    2024-07-18 02:00:03       17 阅读
  6. C#调用非托管dll的两种方式

    2024-07-18 02:00:03       21 阅读
  7. WEB渗透之相关概念(笔记)

    2024-07-18 02:00:03       22 阅读
  8. idea 运行异常 gradle 项目

    2024-07-18 02:00:03       20 阅读
  9. C++ Primer:3.6 多维数组

    2024-07-18 02:00:03       26 阅读