是否可以使用BeautifulSoup编辑内联代码?

时间:2010-01-15 23:33:36

标签: python beautifulsoup

我知道使用beautifulsoup编辑文本的能力,是否可以编辑href链接?我希望能够说出<a href="/foo/bar/">并使用beautifulsoup将其更改为<a href="http://www.foobarinc.com/foo/bar/">。我不确定如何使用beautifulsoup来做到这一点?任何帮助,非常感谢。

2 个答案:

答案 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] returnedKeyError:href(??? )出现:当时,最后一次使它们出现的变化应该让它显然明显地说OP出错了 - 如果不是,就像我一样发布确切的数据和代码,以及完全复制和粘贴追溯(模糊的个人释义! - ),我敢打赌,我们将能够提供帮助! - )