【发布时间】:2018-12-13 18:17:49
【问题描述】:
我想使用 Python 和 bs4 从抓取的 HTML 表中删除 <br> 和 &nbsp;。
HTML 表格:
<tr>
<td style="width: 15; BORDER-BOTTOM: 1px solid">col1</td>
<td colspan="2" style="width: 120; BORDER-BOTTOM: 1px solid"> col2</td>
<td style="width: 50; BORDER-BOTTOM: 1px solid">col3</td>
<td style="width: 50; BORDER-BOTTOM: 1px solid">col5</td>
<td style="width: 50; BORDER-BOTTOM: 1px solid">col6</td>
<td style="width: 90; BORDER-BOTTOM: 1px solid" align="center">col7</td>
<td style="width: 90; BORDER-BOTTOM: 1px solid" align="center">col8</td>
<td style="width: 10; BORDER-BOTTOM: 1px solid">col9</td>
<td style="width: 10; BORDER-BOTTOM: 1px solid">col
<br> 1
<br>0</td>
<td style="width: 10; BORDER-BOTTOM: 1px solid">col11</td>
<td style="width: 10; BORDER-BOTTOM: 1px solid" >col12</td>
<td style="width: 10; BORDER-BOTTOM: 1px solid">col13</td>
<td style="width: 10; BORDER-BOTTOM: 1px solid">col14</td>
<td style="width:10;BORDER-BOTTOM: 1px solid;" >col15</td>
</tr>
<tr bordercolor="#000000" class="rows1">
<td align="left"> 1</td>
<td colspan="2" style="BORDER-LEFT: 1px solid" align="left"> 123456789</td>
<td style="BORDER-LEFT: 1px solid" align="left"> John </td>
<td style="BORDER-LEFT: 1px solid" align="left"> Doe </td>
<td style="BORDER-LEFT: 1px solid" align="left"> </td>
<td style="BORDER-LEFT: 1px solid" align="right"> 3.000</td>
<td style="BORDER-LEFT: 1px solid" align="right"> 0,00</td>
<td style="BORDER-LEFT: 1px solid" align="right"> 30</td>
<td style="BORDER-LEFT: 1px solid" align="right"> 0</td>
<td style="BORDER-LEFT: 1px solid" align="right"> </td>
<td style="BORDER-LEFT: 1px solid" align="right"> </td>
<td style="BORDER-LEFT: 1px solid; BORDER-RIGHT: 1px solid" align="right"> </td>
<td style="BORDER-LEFT: 1px solid; BORDER-RIGHT: 1px solid" align="right"> </td>
<td style="BORDER-LEFT: 1px solid;BORDER-RIGHT: 1px solid;" align="right"> 5000</td>
</tr>
<tr bordercolor="#000000" class="rows0">
<td align="left"> 2</td>
<td colspan="2" style="BORDER-LEFT: 1px solid" align="left"> 123456789</td>
<td style="BORDER-LEFT: 1px solid" align="left"> Jane </td>
<td style="BORDER-LEFT: 1px solid" align="left"> Doe </td>
<td style="BORDER-LEFT: 1px solid" align="left"> </td>
<td style="BORDER-LEFT: 1px solid" align="right"> 3.000</td>
<td style="BORDER-LEFT: 1px solid" align="right"> 0,00</td>
<td style="BORDER-LEFT: 1px solid" align="right"> 30</td>
<td style="BORDER-LEFT: 1px solid" align="right"> 0</td>
<td style="BORDER-LEFT: 1px solid" align="right"> 3</td>
<td style="BORDER-LEFT: 1px solid" align="right"> </td>
<td style="BORDER-LEFT: 1px solid; BORDER-RIGHT: 1px solid" align="right"> </td>
<td style="BORDER-LEFT: 1px solid; BORDER-RIGHT: 1px solid" align="right"> </td>
<td style="BORDER-LEFT: 1px solid;BORDER-RIGHT: 1px solid;" align="right"> 5000</td>
</tr>
Python 代码:
import requests
import bs4
url = "http://www.example.com/test.html"
r = requests.get(url)
html = r.text
soup = bs4.BeautifulSoup(html, 'html.parser')
tables = soup.findAll('table')[1]
for tr in tables.findAll('tr')[0:3]:
cols = tr.findAll('td')
for tds in cols:
print ('{:5}'.format(str(tds.text)), end="")
print()
【问题讨论】:
-
你想用什么替换它们?一旦你知道了,这就是简单的文本操作。
-
我只是想删除它们,不需要替换。
标签: python web-scraping html-table beautifulsoup