如何从html获取href参考linktext?

时间:2017-12-12 14:02:39

标签: python html

我想让href参考linktext。

我尝试了很多方法,但失败了

from bs4 import BeautifulSoup

html = '''
......
<a href="www.link1.com">linktext1</a>
<a href="www.link2.com">linktext2</a>
......
'''

soup = BeautifulSoup(html, 'html.parser')

def gethref(soup,word):
    magic!

print(gethref(soup, 'linktext1'))

#output : www.link1.com

这可能吗?

2 个答案:

答案 0 :(得分:0)

这样的事情,列表理解,

linktext = "linktext1"
[a['href'] for a in soup.find_all('a', href=True) if linktext in a.text.strip()]

如果您希望完全匹配,可以安全地替换if condition

[a['href'] for a in soup.find_all('a', href=True) if linktext == a.text.strip()]

答案 1 :(得分:0)

我在这里使用稍微简单的html。您可以使用stringfind标识链接中的文字,然后获取该项parent(这是链接元素),最后要求{{1} } attribute。

href

应用于您的HTML,它将是:

>>> from bs4 import BeautifulSoup
>>> html = '''\
... <a href='http://www.link1.com'>link text</a>
... '''
>>> soup = BeautifulSoup(html, 'html.parser')
>>> soup.find(string='link text').parent.attrs['href']
'http://www.link1.com'