我正在尝试解析表并将其保存到csv文件中。但是,有些单元格是复选标记的图像(* .gif),我不确定如何在导出到csv时进行评估。
这里有一些HTML代码:
<BODY>
<TABLE>
<TH>
<H3> <BR>TABLE 1 </H3>
</TH>
<TR>
<TD>Data 1 </TD>
<TD>Data 2 </TD>
</TR>
<TR>
<TD>example.gif </TD>
<TD>example.gif </TD>
</TR>
</TABLE>
</BODY>
在实际表中,包含.gif的表行的html是
<td align="center" width="55px">
<!--
-->
<img align="top" height="13" hspace="2" src="http://explorer.natureserve.org/images/checkmark.gif" vspace="2" width="14"/>
<!--
-->
</td>
我到目前为止的代码是:
table = soup.find('table')
rows = []
for row in table.find_all('tr'):
rows.append([val.text.encode('utf8') for val in row.find_all('td')])
在示例提供中,我已经将代码评估为:
[
'Spartina patens',
'G5',
'Graminoid',
'Herb (field)',
'\n\r\n \xc2\xa0\r\n\n',
'\n\n\n\n',
'\n\r\n \xc2\xa0\r\n\n',
'\xc2\xa0',
'\xc2\xa0'
]
我猜测如果单元格不包含&#39; \ xc2 \ x&#39;那么我可以评估为1,但不知道如何做到这一点。任何帮助将不胜感激。
我想做的是,如果图像存在,则在适当的行和列中放置1,否则为0。
答案 0 :(得分:1)
检查循环中每个img
是否td
:
for row in table.find_all('tr'):
rows.append([1 if val.img else 0 for val in row.find_all('td')])
或者有点棘手:
[int(val.img is not None) for val in row.find_all('td')]
其中val.img
是val.find('img')
的快捷方式。