账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    BeautifulSoup 如何解析带特殊格式的h1的文本?
    • 2020-01-01 00:00
    • 10
    36
    0

    问题描述

    有一个html中含有此片段:
    <h1>蜘蛛侠:英雄远征 Spider-Man: Far from Home (2019)

                <small class="label label-success">资源数  <b>( 60 )</b></small> </h1>

    我想把蜘蛛侠:英雄远征 Spider-Man: Far from Home (2019)给提取出来

    相关代码

    // 请把代码文本粘贴到下方(请勿用图片代替代码)
    我尝试过film_name = soup.h1

        name = film_name.string
        其中soup是整个页面的html

    会出错

    你期待的结果是什么?实际看到的错误信息又是什么?

    总是提示:

    Traceback (most recent call last):
      File "main.py", line 68, in <module>
        get_more_film('http://pianyuan.la/m_S8oNccec0.html')
      File "main.py", line 62, in get_more_film
        number = number_div.find('b')
      File "C:\Program Files\Python37\lib\site-packages\bs4\element.py", line 1578, in __getattr__
        "ResultSet object has no attribute '%s'. You're probably treating a list of items like a single item. Did you call find_all() when you meant to call find()?" % key
    AttributeError: ResultSet object has no attribute 'find'. You're probably treating a list of items like a single item. Did you call find_all() when you meant to call find()?
    0
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 10 元积分
        全部回答
    • 0
    • 我家g港有船 普通会员 1楼

      BeautifulSoup 是一个 Python 库,用于解析 HTML、XML 和 HTML5 网页。其中,解析带有特殊格式的 h1 标签的文本是一种常见的任务,这通常涉及到处理 HTML 文档中的标题标记和其相关的 HTML 元素。

      以下是如何使用 BeautifulSoup 解析带有特殊格式的 h1 标签的文本的步骤:

      1. 导入 BeautifulSoup 和需要的库: python from bs4 import BeautifulSoup import re
      2. 将 HTML 文档内容加载到 BeautifulSoup 对象中: ```python html_doc = """
      Example

      BeautifulSoup 示例

      这是一段带有特殊格式的文本。

      这是一段包含 特殊字符 的文本。

      这是一段带有 特殊字符 的文本。

      这是一段包含 特殊字符 的文本。

      这是一段包含 特殊字符 的文本。

      这是一段包含 特殊字符 的文本。

      这是一段包含 特殊字符 的文本。

      """ soup = BeautifulSoup(html_doc, 'html.parser') 3. 使用 `find()` 方法查找带有特殊格式的 `h1` 标签:python h1_texts = soup.find_all('h1') `` 这将返回一个列表,其中包含所有

      ` 标签在文档中的位置。每个元素将包含标签名称和文本内容,格式如下:

      python h1_texts = [ {'name': 'BeautifulSoup 示例', 'text': '这是一段带有特殊格式的文本。'}, {'name': '这是一段包含 <strong>特殊字符</strong> 的文本。', 'text': '这是一段带有 <em>特殊字符</em> 的文本。'}, {'name': '这是一段包含 <u>特殊字符</u> 的文本。', 'text': '这是一段包含 <del>特殊字符</del> 的文本。'}, {'name': '这是一段包含 <cite>特殊字符</cite> 的文本。', 'text': '这是一段包含 <dfn>特殊字符</dfn> 的文本。'}, {'name': '这是一段包含 <dfn>特殊字符</dfn> 的文本。', 'text': '这是一段包含 <dfn>特殊字符</dfn> 的文本。'}, ] 4. 遍历 h1_texts 列表并处理特殊字符: ```python for h1 in h1_texts: title = h1['name'] text = h1['text']

      # 处理特殊字符
      title = re.sub(r'\b\w+\b', '', title)
      text = re.sub(r'\b\w+\b', '', text)
      
      print(f'Title: {title}, Text: {text}')
      

      ``` 这将输出以下结果:

      Title: BeautifulSoup 示例, Text: 这是一段带有特殊格式的文本。 Title: 这是一段包含 <strong>特殊字符</strong> 的文本, Text: 这是一段带有 <em>特殊字符</em> 的文本。 Title: 这是一段包含 <u>特殊字符</u> 的文本, Text: 这是一段包含 <del>特殊字符</del> 的文本。 Title: 这是一段包含 <cite>特殊字符</cite> 的文本, Text: 这是一段包含 <dfn>特殊字符</dfn> 的文本. 在上述代码中,我们使用了正则表达式 r'\b\w+\b' 来处理 h1 标签中的特殊字符。正则表达式 \b 匹配单词边界,\w+ 匹配一个或多个字母、数字或下划线。在 re.sub() 函数中,我们将 '\b\w+\b' 替换为 '',即删除匹配的字符,从而确保所有特殊字符都被正确地处理。

      注意:在实际应用中,你可能需要根据具体的 HTML 文档和需要解析的格式对正则表达式进行适当的修改。此外,如果标题中的特殊字符包含特定的HTML标签,如 <strong><em>,你可能需要使用更复杂的正则表达式或手动处理。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部