【问题标题】:Evaluate image in html table using Python使用 Python 评估 html 表中的图像
【发布时间】:2015-03-11 01:04:26
【问题描述】:

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

【问题讨论】:

    标签: python html beautifulsoup html-parsing


    【解决方案1】:

    检查循环中的每个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') 的快捷方式。

    【讨论】:

    • 效果很好。不幸的是,我只需要评估表中的 4 到 9 列。我该怎么做?我写了一些 klugey 代码,但很惭愧分享它。
    • @user44796 切片:row.find_all('td')[3:9]
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-02-07
    • 1970-01-01
    • 2020-08-08
    • 2018-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多