侧边栏壁纸
  • 累计撰写 17 篇文章
  • 累计创建 10 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Beautifulsoup常见用法

十点差三分
2024-11-04 / 0 评论 / 0 点赞 / 14 阅读 / 0 字

Beautiful Soup常见的用法

1. 提取文本

  • .get_text()
    

    :提取标签内的文本内容,并可以指定分隔符和是否去除空白:

    soup.get_text("|", strip=True)
    
  • .stripped_strings
    

    :生成器,返回文本列表,可以手动处理列表:

    [text for text in soup.stripped_strings]
    

2. 遍历文档树

使用.prettify()方法可以输出整个HTML文档的格式化字符串,帮助理解文档结构:

print(soup.prettify())

3. 搜索文档元素

  • .find()
    

    :查找并返回第一个符合条件的标签:

    result = soup.find('tag_name', attrs={'class': 'classname'})
    
  • .find_all()
    

    :查找并返回所有符合条件的标签:

    results = soup.find_all('tag_name', attrs={'class': 'classname'})
    

    或者直接查找多个标签:

    results = soup.find_all(['tag1', 'tag2'])
    

4. 提取属性和属性值

使用.attrs属性可以访问标签的属性和属性值:

soup.tag.attrs

5. 其他常用方法

  • .title.string:提取<title>标签中的文本。
  • .p.string:提取所有<p>标签中的文本。

css选择器的基本用法

基本的使用方法

在BeautifulSoup中,使用.select()方法来应用CSS选择器:

results = soup.select('your-css-selector')

这将返回一个列表,其中包含所有匹配的元素。

基本选择器

  1. 标签选择器:选择所有指定标签名的元素。

    soup.select('p')  # 选择所有的<p>标签
    
  2. 类选择器:选择所有具有指定类属性的元素。

    soup.select('.className')  # 选择所有class属性为"className"的元素
    
  3. ID选择器:选择具有指定id属性的元素。

    soup.select('#idName')  # 选择id属性为"idName"的元素
    

属性选择器

  1. 属性存在:选择具有指定属性的所有元素。

    soup.select('[type]')  # 选择所有具有type属性的元素
    
  2. 属性精确值:选择属性值完全匹配指定值的元素。

    soup.select('[type="text"]')  # 选择所有type属性为"text"的元素
    
  3. 属性值包含:选择属性值包含指定文本的元素。

    soup.select('[href*="example"]')  # 选择所有href属性值中包含"example"的元素
    
  4. 属性值以指定值开头:选择属性值以指定文本开头的元素。

    soup.select('[href^="https"]')  # 选择所有href属性值以"https"开头的元素
    
  5. 属性值以指定值结尾:选择属性值以指定文本结尾的元素。

    soup.select('[href$=".pdf"]')  # 选择所有href属性值以".pdf"结尾的元素
    

伪类选择器

  1. :first-child:选择作为其父元素的第一个子元素的元素。

    soup.select('p:first-child')  # 选择每个父元素下的第一个<p>元素
    
  2. :nth-child(n):选择作为其父元素的第n个子元素的元素。

    soup.select('tr:nth-child(2)')  # 选择每个父元素下的第二个<tr>元素
    
  3. :not(selector):选择不匹配指定选择器的元素。

    soup.select('p:not(.className)')  # 选择所有不包含class="className"的<p>元素
    

组合选择器

  1. 后代选择器:空格分隔,选择所有后代元素。

    soup.select('div p')  # 选择<div>元素内部的所有<p>元素
    
  2. 子代选择器>分隔,选择直接子元素。

    soup.select('ul > li')  # 选择<ul>元素的直接<li>子元素
    
  3. 相邻兄弟选择器+分隔,选择紧随其后的兄弟元素。

    soup.select('h1 + p')  # 选择紧跟在<h1>元素后的<p>元素
    
  4. 通用兄弟选择器~分隔,选择所有后续的兄弟元素。

    soup.select('h1 ~ p')  # 选择所有<h1>元素后的<p>元素
    

提取标签中的属性的两种方式

使用find_all方法

  • find_all方法可以查找所有匹配的标签,并返回一个列表。然后你可以遍历这个列表来提取href属性。

    a_tags = soup.find_all('a')
    for tag in a_tags:
      href = tag.get('href')
      print(href)
    

使用CSS选择器

  • 如果你熟悉CSS选择器,可以使用select方法来更精确地选择元素。

    a_tags = soup.select('a[href]')
    for tag in a_tags:
      href = tag.get('href')
      print(href)
    
0

评论区