我想让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
这可能吗?
答案 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。您可以使用string
和find
标识链接中的文字,然后获取该项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'