首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用BeautifulSoup查找第一个锚标签的文本

如何使用BeautifulSoup查找第一个锚标签的文本
EN

Stack Overflow用户
提问于 2016-04-28 00:50:57
回答 3查看 1.6K关注 0票数 1

我有一个这样的HTML结构

代码语言:javascript
运行
复制
<p class="title">
  <a href="abc.com">
   Story
  </a> 
  <span class="domain">
    <a href="xyz.com">comments</a>
  </span>
</p>

我想提取第一个锚标签的文本,即Story

下面是我如何使用Beautifulsoup从锚标记中提取文本

代码语言:javascript
运行
复制
soup = BeautifulSoup(html, 'html.parser')
soup.prettify()
for link in soup.find_all(class_='title'):
      print link.findNext('a').text

和输出:

代码语言:javascript
运行
复制
Story

Comments

但我只想提取第一个锚标签的文本,即Story。我如何在python中使用BeautifulSoup来做这件事?

EN

回答 3

Stack Overflow用户

发布于 2016-04-28 00:53:19

您可以通过执行以下操作来访问第一个a标记

代码语言:javascript
运行
复制
print link.a.text

去掉多余的空格

代码语言:javascript
运行
复制
link.a.text.strip()
票数 1
EN

Stack Overflow用户

发布于 2016-04-28 00:53:43

您可以通过链接find()调用并使用get_text()方法来完成此操作:

代码语言:javascript
运行
复制
soup.find("p", class_="title").a.get_text(strip=True)

其中.a等同于BeautifulSoup中的.find("a")

或者,使用CSS selector

代码语言:javascript
运行
复制
soup.select_one("p.title > a").get_text(strip=True)
票数 1
EN

Stack Overflow用户

发布于 2016-04-28 00:56:24

如果你只想要第一个锚的文本,那么你不需要使用find类。

你没说任何关于class="title"的事。

代码语言:javascript
运行
复制
In [9]: html = """
<p class="title">
  <a href="abc.com">
   Story
  </a>
  <span class="domain">
    <a href="xyz.com">comments</a>
  </span>
</p>
"""
In [10]: soup = BeautifulSoup(html, "html.parser")
In [11]: soup.a.text.strip()
Out[11]: u'Story'
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36896069

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档