我有一个这样的HTML结构
<p class="title">
<a href="abc.com">
Story
</a>
<span class="domain">
<a href="xyz.com">comments</a>
</span>
</p>
我想提取第一个锚标签的文本,即Story
下面是我如何使用Beautifulsoup
从锚标记中提取文本
soup = BeautifulSoup(html, 'html.parser')
soup.prettify()
for link in soup.find_all(class_='title'):
print link.findNext('a').text
和输出:
Story
Comments
但我只想提取第一个锚标签的文本,即Story
。我如何在python中使用BeautifulSoup来做这件事?
发布于 2016-04-28 00:53:19
您可以通过执行以下操作来访问第一个a
标记
print link.a.text
去掉多余的空格
link.a.text.strip()
发布于 2016-04-28 00:53:43
您可以通过链接find()
调用并使用get_text()
方法来完成此操作:
soup.find("p", class_="title").a.get_text(strip=True)
其中.a
等同于BeautifulSoup
中的.find("a")
。
或者,使用CSS selector
soup.select_one("p.title > a").get_text(strip=True)
发布于 2016-04-28 00:56:24
如果你只想要第一个锚的文本,那么你不需要使用find
类。
你没说任何关于class="title"
的事。
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'
https://stackoverflow.com/questions/36896069
复制相似问题