使用 Python 在 html table 中评估图像

Evaluate image in html table using Python

我正在尝试解析 table 并将其保存到 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>

在实际的 table 中,包含 .gif 的 table 行的 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'
 ]

我猜测如果单元格不包含“\xc2\x”,那么我可以评估为 1,但不确定如何执行此操作。任何帮助将不胜感激。

如果图像存在,我想做的是在相应的行和列中放置一个 1,否则放置一个 0。

检查循环中每个 td 是否有 img:

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.imgval.find('img') 的快捷方式。