我知道使用beautifulsoup编辑文本的能力,是否可以编辑href链接?我希望能够说出<a href="/foo/bar/">
并使用beautifulsoup将其更改为<a href="http://www.foobarinc.com/foo/bar/">
。我不确定如何使用beautifulsoup来做到这一点?任何帮助,非常感谢。
答案 0 :(得分:6)
与另一个问题一样:使用BeautifulSoup,您将内容解析为一组表示文档的分层嵌套对象,然后在将它们序列化回不同文本之前更改这些对象。你没有直接编辑文本。
标记的href="..."
部分表示属性。要访问BeautifulSoup中每个元素的属性,请使用el[name]
item-style access。因此,要在a href
属性中将根网址更改为绝对网址,它就像:
for link in soup.findAll('a'):
if link['href'].startswith('/'):
link['href']= 'http://www.foobarinc.com'+link['href']
答案 1 :(得分:3)
尽管OP在对bobince的评论中说道,但下面的代码工作正常:
from BeautifulSoup import BeautifulSoup
ht = '''
<a href="/foo/bar/">Hello world</a>
'''
soup = BeautifulSoup(ht)
for link in soup.findAll('a'):
if link['href'].startswith('/'):
link['href']= 'http://www.foobarinc.com'+link['href']
print soup
发出
<a href="http://www.foobarinc.com/foo/bar/">Hello world</a>
根据需要。所以,而不是模糊地声称
我正在尝试类似的事情, 但一直[无]返回。一世 找不到字典列表 与标签匹配。我试过这个, 它返回KeyError:href。
(???),OP最好尝试修改我刚发布的代码,让它越来越接近自己的代码,直到奇怪的错误[none] returned
和KeyError:href
(??? )出现:当时,最后一次使它们出现的变化应该让它显然明显地说OP出错了 - 如果不是,就像我一样发布确切的数据和代码,以及完全复制和粘贴追溯(不模糊的个人释义! - ),我敢打赌,我们将能够提供帮助! - )