【发布时间】:2011-08-09 15:43:30
【问题描述】:
我有以下问题:当html标签之间有空格时,我的代码没有给我想要输出的文本。
而不是输出:
year|salary|bonus
2005|100,000|50,000
2006|120,000|80,000
我得到了这个:
|salary|bonus
2005|100,000|50,000
2006|120,000|80,000
文本“年”没有输出。
这是我的代码:
from BeautifulSoup import BeautifulSoup
import re
html = '<html><body><table><tr><td> <p>year</p></td><td><p>salary</p></td><td>bonus</td></tr><tr><td>2005</td><td>100,000</td><td>50,000</td></tr><tr><td>2006</td><td>120,000</td><td>80,000</td></tr></table></html>'
soup = BeautifulSoup(html)
table = soup.find('table')
rows = table.findAll('tr')
store=[]
for tr in rows:
cols = tr.findAll('td')
row = []
for td in cols:
try:
row.append(''.join(td.find(text=True)))
except Exception:
row.append('')
store.append('|'.join(filter(None, row)))
print '\n'.join(store)
问题出在以下空间:
"<td> <p>year</p></td>"
当我从网上提取一些 html 时,有没有办法摆脱那个空间?
【问题讨论】:
-
您还应该使用带有“|”分隔符的
csv模块而不仅仅是 '|'.join() -
这对我有什么用?关于如何做到这一点的任何指导?感谢您的帮助。
-
那太好了。谢谢。
-
@Josh Lee:我看到你最近的一批问题都是非常增量的——你基本上是在发布上一个答案的“答案”代码并用它来问你的下一个问题。您应该知道,随着时间的推移,这可能会导致您的帐户被暂停;事实上,这是blog.stackoverflow.com/2009/04/a-day-in-the-penalty-box 列出的主要原因之一。
-
@phooji:感谢您的谨慎。我是 Python 和这个网站的新手。我会尽量在我的问题上更有选择性。
标签: python html tags beautifulsoup