BeautifulSoup修改锚标签到位?

时间:2014-10-28 00:58:14

标签: python html beautifulsoup

我想抓取html文档中的所有锚标签。这些锚标签可以在任何深度的任何地方生活。一旦我有链接,我处理它们然后生成一个新链接。

我想修改原始HTML以在锚标记中包含这些新链接。

这是我到目前为止所做的:

soup = BeautifulSoup(...)
links = soup.findAll("a")

for link in links:
    new_link = process_href(a['href'])
    # Now I want to replace this anchor tag href with new_link

# Should print out entire html with the new links
print soup.prettify()

如何实现这一目标?由于每个锚标记位于HTML中的特定位置,是否可以使用BeautifulSoup修改标记?或者基于字符串的解决方案是否会更好地工作(即,将整个HTML转换为String并进行某种字符串替换)?后者的问题是我仍然需要一种方法来单独处理href链接以生成新的链接。

1 个答案:

答案 0 :(得分:0)

你可以修改汤元素:

soup = BeautifulSoup(urllib2.urlopen('http://stackoverflow.com/'))
first_link = soup('a')[0]
print first_link
# <a href="//stackoverflow.com">current community</a>
first_link['href'] = first_link['href'].replace('//', 'http://')
print first_link
# <a href="http://stackoverflow.com">current community</a>