1

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

4

2 回答 2

6

与您的另一个问题一样:使用 BeautifulSoup,您将内容解析为一组表示文档的分层嵌套对象,然后在将这些对象序列化回不同的文本之前更改这些对象。您没有直接编辑文本。

标记的href="..."部分代表一个属性。要访问 BeautifulSoup 中每个元素的属性,您可以使用el[name] item-style access。因此,要将有根 URL 更改为a href属性中的绝对 URL,它很简单:

for link in soup.findAll('a'):
    if link['href'].startswith('/'):
        link['href']= 'http://www.foobarinc.com'+link['href']
于 2010-01-15T23:42:27.927 回答
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>

如预期的。所以,而不是含糊地声称

我正在尝试与此类似的事情,但一直 [none] 返回。我找不到与标签匹配的字典列表。我试过这个,它返回 KeyError:href。

(???),OP最好尝试修改我刚刚发布的代码,使其越来越接近他自己的代码,直到出现奇怪的错误[none] returnedKeyError:href(???):当时,最后一次更改它们的出现应该使 OP 做错了什么显而易见——如果没有,请像我一样发布确切的数据和代码,以及完全复制和粘贴的回溯(不是模糊的个人解释!-),我敢打赌我们将能够提供帮助!-)

于 2010-01-16T03:02:29.203 回答