我知道使用 beautifulsoup 编辑文本的能力,是否可以编辑 href 链接?我希望能够说<a href="/foo/bar/">
并使用 beautifulsoup 将其更改为<a href="http://www.foobarinc.com/foo/bar/">
. 我不确定如何使用 beautifulsoup 来做到这一点?任何帮助,非常感谢。
问问题
1728 次
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] returned
和KeyError:href
(???):当时,最后一次更改它们的出现应该使 OP 做错了什么显而易见——如果没有,请像我一样发布确切的数据和代码,以及完全复制和粘贴的回溯(不是模糊的个人解释!-),我敢打赌我们将能够提供帮助!-)
于 2010-01-16T03:02:29.203 回答