python - 使用Python评估html表中的图像

标签 python html beautifulsoup html-parsing

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

我猜测如果单元格不包含“\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') 的快捷方式。

关于python - 使用Python评估html表中的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28976843/

相关文章:

python - 在 html 模板中打印 appengine 模型实体 ID

python - 如何使用 BeautifulSoup Python 抓取 "show more"按钮?

python - BeautifulSoup 找不到绳子

python - Scala 的 Option 或 Either 是否有 Python 等价物?

python - 文件未正确解码

Python find number 步骤将值分配给列表中的元素

css - 如何为 SPAN 设置高度属性

javascript - 我如何通过单击一个元素淡出一个 div 并淡入一个? HTML

html - 从图像中删除白色边框

python - 网络抓取 - 转会市场最有值(value)的球员