Python 如何在一些锚定标记之间提取文本?
我需要从HTML页面中提取艺术家的名字。以下是该页面的一个片段: 我在哪里搞砸了?你可以试试这个:Python 如何在一些锚定标记之间提取文本?,python,anchor,beautifulsoup,scraper,Python,Anchor,Beautifulsoup,Scraper,我需要从HTML页面中提取艺术家的名字。以下是该页面的一个片段: 我在哪里搞砸了?你可以试试这个: In [1]: from bs4 import BeautifulSoup In [2]: s = # Your string here... In [3]: soup = BeautifulSoup(s) In [4]: for anchor in soup.find_all('a'): ...: print anchor.text ...: ...: her
In [1]: from bs4 import BeautifulSoup
In [2]: s = # Your string here...
In [3]: soup = BeautifulSoup(s)
In [4]: for anchor in soup.find_all('a'):
...: print anchor.text
...:
...:
here lies the text i need
在这里,
find\u all
方法返回一个包含所有匹配锚定标记的列表,之后我们可以打印文本
属性以获取标记之间的值。正则表达式是您的朋友。作为RocketDonkey答案的另一种选择,RocketDonkey正确地使用了BeautifulSoup;您可以使用如下正则表达式通过soup('a')进行解析
>([a-zA-Z]*|[0-9]|(\w\s*)*)</a>
>([a-zA-Z]*|[0-9]|(\w\s*)*)
您可以利用该方法直接获取锚定标记之间的文本 用于汤中的链接。选择('td.subjectCell a'):
打印link.text
它是
td
元素中具有subjectCell类的a
元素。soup.findAll
和link.attrs
可用于轻松读取href
属性
工作代码:
soup = BeautifulSoup(html)
for link in soup.findAll('a'):
print (link.attrs['href'])
/music/example
/music/example-artist
输出:
soup = BeautifulSoup(html)
for link in soup.findAll('a'):
print (link.attrs['href'])
/music/example
/music/example-artist
你正在打印
html
而不是循环中的link
。哦,是的,我打印html是为了在这里发布代码,但忘了更改。但仍然不是我需要的解决方案,它打印整个锚定标签。我已经在这里回答了您的问题,它可能会起作用str(link)
或link。prettify()
是您想要的吗?这不是您最初问muchacho的问题。你的问题应该更具描述性,我们无法读懂你的心思。用正则表达式解析html就像与骑士的盔甲共舞。find\u all
方法名称不是有点像python吗?而且,它并不完全返回一个迭代器,而是一个列表。@CristianCiupitu是的,在我的脑海中仍然有旧的BeautifulSoup方法。至于迭代器的评论,我归咎于我已经过了睡觉时间:)@muchacho没有复制并粘贴[1]:中的,或者。
。这些是他的ipython终端的线路号。它不是有效的python。可以从一个.txt打开多个URL,然后一次刮取网页内容吗?@muchacho是的,您可以将其包装在一个for
循环中,循环遍历URL,也许可以将匹配项存储在一个新列表中。我建议您阅读for
循环和open
——这应该会让您开始:)感谢您提供此代码片段,它可能会提供一些有限的、即时的帮助。通过展示为什么这是一个很好的问题解决方案,A将极大地提高它的长期价值,并将使它对未来有其他类似问题的读者更有用。请在您的回答中添加一些解释,包括您所做的假设。
/music/example
/music/example-artist