2014-10-28 41 views
0

我想抓住一個html文檔中的所有錨點標籤。這些錨標籤可以在任何深度的任何地方生活。一旦我有鏈接,我處理它們,然後我生成一個新的鏈接。BeautifulSoup修改錨點標籤到位?

我想修改原始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轉換爲字符串並進行某種字符串替換)?後者的問題是,我仍然需要一種方法來單獨處理href鏈接以生成新鏈接。

回答

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>