【问题标题】:Extract html cell data XPath提取 html 单元格数据 XPath
【发布时间】:2014-11-28 23:46:23
【问题描述】:

我有这个简单的 html 表格:

<tr align="center" class="tableRow1Font" >
<td>OPEN</td>
<td>80002</td>
<td>
<span style="font-weight:bold;">
ACCY
</span> 
<A HREF="http://bulletin.gwu.edu/search/?P=ACCY+2001" target="_blank">
<span style="font-weight:bold;">
2001
</span>
</A>
</td>

<td>10</td>
<td>Intro Financial Accounting</td>
<td>3.00</td>
<td> Ray, K</td>
<td><a href="http://virtualtour.gwu.edu/#MON" target="_blank" >MON</a> 113</td>
<td>MW<br>12:45PM - 02:00PM</td>
<td>08/25/14 - 12/06/14</td>
<td>

</td>
</tr>

我在 Python 中使用 xpath 和 requests。使用 xpath 函数如何从该表中提取所有“td”标题并用逗号分隔它们?

我希望提取的数据如下所示:

OPEN, 80002, ACCY 2001, 10, Intro to Financial Accounting, 3.00, Ray, K, MW 12:45-02:00PM 

【问题讨论】:

    标签: python xpath html-table extract


    【解决方案1】:

    试试这个:

    代码:

    src = """<tr align="center" class="tableRow1Font" >
    <td>OPEN</td>
    <td>80002</td>
    <td>
    <span style="font-weight:bold;">
    ACCY
    </span> 
    <A HREF="http://bulletin.gwu.edu/search/?P=ACCY+2001" target="_blank">
    <span style="font-weight:bold;">
    2001
    </span>
    </A>
    </td>
    <td>10</td>
    <td>Intro Financial Accounting</td>
    <td>3.00</td>
    <td> Ray, K</td>
    <td><a href="http://virtualtour.gwu.edu/#MON" target="_blank" >MON</a> 113</td>
    <td>MW<br>12:45PM - 02:00PM</td>
    <td>08/25/14 - 12/06/14</td>
    <td>
    </td>
    </tr>"""
    
    from lxml import html
    
    tree = html.fromstring(src)
    tds = tree.xpath("//td/descendant-or-self::*/text()[normalize-space()]")
    
    print ", ".join([td.strip() for td in tds])
    

    结果:

    OPEN, 80002, ACCY, 2001, 10, Intro Financial Accounting, 3.00, Ray, K, MON, 113, MW, 12:45PM - 02:00PM, 08/25/14 - 12/06/14
    [Finished in 0.5s]
    

    请注意,这会从所有td 标记中获取所有文本,包括来自&lt;a&gt; 子节点内部的文本,即。 MON.

    清理结果由您决定。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-23
      • 1970-01-01
      • 1970-01-01
      • 2011-08-28
      • 1970-01-01
      相关资源
      最近更新 更多