使用 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.img
是 val.find('img')
的快捷方式。
我正在尝试解析 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.img
是 val.find('img')
的快捷方式。