编辑:基本上,我正在尝试执行Decompose,但是我没有删除标签并完全销毁其内容,而是想用其内容替换标签。
我想用字符串格式的标签内容替换html文档中的所有'a'标签。这样可以让我更轻松地将html写入csv。然而,我无法通过替换步骤。我一直在尝试使用BeautifulSoup的replace_with()来完成它,但结果并没有像预期的那样回归。
# Import modules
from bs4 import BeautifulSoup
from urllib2 import urlopen
# URL to soup
URL = 'http://www.barringtonhills-il.gov/foia/ordinances_12.htm'
html_content = urlopen(URL).read()
soup = BeautifulSoup(html_content)
# Replaces links with link text
links = soup.find_all('a')
for link in links:
linkText = link.contents[0]
linkTextCln = '%s' % (linkText.string)
if linkTextCln != 'None':
link.replaceWith(linkTextCln)
print link
返回:
<a href="index.htm">Home</a>
<a href="instruct.htm">Instructions</a>
<a href="requests.htm">FOIA Requests</a>
<a href="kiosk.htm">FOIA Kiosk</a>
<a href="geninfo.htm">Government Profile</a>
etc etc etc
但预期的回报是:
Home
Instructions
FOIA Requests
FOIA Kiosk
Government Profile
etc etc etc
有关为什么replaceWith没有按预期工作的任何想法?是否有更好的方法来解决这个问题?
答案 0 :(得分:0)
我相信使用bs4,该方法现在为replace_with
,但如果您只想输出标签的内容,则以下方法有效:
from bs4 import BeautifulSoup
s = '''
<a href="index.htm">Home</a>
<a href="instruct.htm">Instructions</a>
<a href="requests.htm">FOIA Requests</a>
<a href="kiosk.htm">FOIA Kiosk</a>
<a href="geninfo.htm">Government Profile</a>
'''
soup = BeautifulSoup(s, 'html.parser')
for tag in soup.findAll('a'):
print(tag.string)
输出:
Home
Instructions
FOIA Requests
FOIA Kiosk
Government Profile
[Finished in 0.2s]