当前位置: 首页 > 知识库问答 >
问题:

提取标题和强标签与美丽汤

赏新知
2023-03-14

我希望从< code>div内的标题和< code >内的文本中提取文本字符串

我可以用<code>汤得到标题。h1</code>,但我想获得特定于div<code>中的<code>h1</code>

超文本标记语言:

所以我想得到这是标题(还有一点!)有人能帮忙吗?

谢谢


共有2个答案

广献
2023-03-14

使用BeautifulSoup从div内的标题和标记内的文本中提取文本字符串的代码

>>> from bs4 import BeautifulSoup
>>> data = """<div class="site-content"><h1>Here is the title<strong>( And a bit more! )</strong></h1>"""
>>> soup = BeautifulSoup(data, "html.parser")
>>> reqText = soup.find('h1').text
>>> print(reqText)
'Here is the title( And a bit more! )'
>>> reqText1 = soup.find('strong').text
>>> print(reqText1)
'( And a bit more! )'

或者

>>> data = """<div class="site-content"><h1>Here is the title<strong>( And a bit more! )</strong></h1>"""
>>> soup = BeautifulSoup(data, "html.parser")
>>> soup.find('strong').text
'( And a bit more! )'
>>> reqText1 = soup.find('h1')
>>> for i in reqText1:
...    p_tag = soup.h1
...    s_tag = soup.strong
...    s_tag.decompose()
...    p_tag.get_text()
...
'Here is the title'
姚煜
2023-03-14

你可以使用查找 attrs 参数,例如:

soup.find('div', attrs={'class': 'site-content'}).h1

编辑:仅获取直接文本

for div in soup.findAll('div', attrs={'class': 'site-content'}):
    print ''.join([x for x in div.h1.contents \
                                 if isinstance(x, bs4.element.NavigableString)])

使用lxml和xpath,生活更轻松:

>>> from lxml import html
>>> root = html.parse('x.html')
>>> print root.xpath('//div[@class="site-content"]/h1/text()')
['Here is the title']
>>> print root.xpath('//div[@class="site-content"]/h1//text()')
['Here is the title', '( And a bit more! )']
>>> print root.xpath('//div[@class="site-content"]/h1/strong/text()')
['( And a bit more! )']
 类似资料:
  • 我试图使用美丽的汤抓取newegg的产品名称、描述、价格和图像。我有以下bs4.element.标签类型,我想从标签中提取“src”链接。以下是我的标签: 我怎样才能提取 从这个标签?我试过了 但我收到了Keyerror。

  • 下面是一个网络刮刀,它用漂亮的汤从这个网站上刮出一个团队名单。每一列数据都被放入一个数组,然后循环到一个CSV文件中。我想刮掉团队名称(代码中的“团队”),但我正在努力将元标记(见下文的html代码)合并到我的CSV写入器循环中。 我认为问题在于“Team”数组中的值长度与其他列中的值长度不匹配。例如,我当前的代码打印的数组如下所示: 但我需要团队数组(最后一个数组)匹配前两个数组的长度,如下所示

  • 我正在尝试使用Pythons beautifulSoup从HTML文件中提取数据。下面一行HTML是我感兴趣的。 我想提取标题(与电子邮件和时间戳)。我可以使用访问该类... 我可以从那里打印<code>div</code>的全部内容或div中的标记中的信息,但我不知道如何获取<code>title</code>,因为它位于同一个<code〕div</code>标记中

  • 我正在尝试使用漂亮的汤解析网页(这是我有生以来第一次),我遇到了一个奇怪的错误。html结构中的标记中有一个标记,我一直收到错误 html标签的结构如下:页面上项目的整个网格都在div类"properties_reviews"中,然后进入div类"preview"中,用于特定项目,该类"preview"还有两个类:照片的"preview-media"和我需要解析的文本信息的"preview-con

  • 考虑一下这段代码: 它只打印“divTag” 更新: 我基本上想在'a'标签中提取“字符串”值。

  • 问题内容: 我有一个像 我可以得到标题标签 但是我怎样才能在b标签之后得到文本呢?我想通过引用该元素而不是body元素来获取包含“ Title:”的元素之后的文本。 问题答案: 参考的文档,你可能想使用你的: 在这种情况下,“同级”是下一个节点,而不是下一个元素/标签。元素的下一个节点是文本节点,因此您可以获得所需的文本。