从html文档中提取日期

2024-10-03 23:19:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个相当大的html文件。 我需要抓取这个html文件并提取某些信息

soup.findAll('table',{"summary" : "This table displays snapshot information"})

[<table border="1" summary="This table displays snapshot information" width="500">
 <tbody><tr><th class="awrnobg" scope="col"></th><th class="awrbg" scope="col">Snap Id</th><th class="awrbg" scope="col">Snap Time</th><th class="awrbg" scope="col">Sessions</th><th class="awrbg" scope="col">Cursors/Session</th></tr>
 <tr><td class="awrnc" scope="row">Begin Snap:</td><td align="right" class="awrnc">98810</td><td align="center" class="awrnc">29-Jun-15 08:00:02</td><td align="right" class="awrnc">700</td><td align="right" class="awrnc">    129.6</td></tr>
 <tr><td class="awrc" scope="row">End Snap:</td><td align="right" class="awrc">98864</td><td align="center" class="awrc">29-Jun-15 17:00:23</td><td align="right" class="awrc">703</td><td align="right" class="awrc">    129.1</td></tr>
 <tr><td class="awrnc" scope="row">Elapsed:</td><td class="awrnc"> </td><td align="center" class="awrnc">             540.35 (mins)</td><td class="awrnc"> </td><td class="awrnc"> </td></tr>
 <tr><td class="awrc" scope="row">DB Time:</td><td class="awrc"> </td><td align="center" class="awrc">           2,963.17 (mins)</td><td class="awrc"> </td><td class="awrc"> </td></tr>
 </tbody></table>]

我用漂亮的汤弄了一张单子。 但我需要提取日期2015年6月29日08:00:02有什么想法吗 我可以单独操作列表项,但这看起来很难看。在


Tags: righttablecoltrclasstdrowcenter
1条回答
网友
1楼 · 发布于 2024-10-03 23:19:36

只需使用class搜索td。它应该返回一个列表,您可以从那里继续。在

from bs4 import BeautifulSoup as bsoup

html = """<table border="1" summary="This table displays snapshot information" width="500">
 <tbody><tr><th class="awrnobg" scope="col"></th><th class="awrbg" scope="col">Snap Id</th><th class="awrbg" scope="col">Snap Time</th><th class="awrbg" scope="col">Sessions</th><th class="awrbg" scope="col">Cursors/Session</th></tr>
 <tr><td class="awrnc" scope="row">Begin Snap:</td><td align="right" class="awrnc">98810</td><td align="center" class="awrnc">29-Jun-15 08:00:02</td><td align="right" class="awrnc">700</td><td align="right" class="awrnc">    129.6</td></tr>
 <tr><td class="awrc" scope="row">End Snap:</td><td align="right" class="awrc">98864</td><td align="center" class="awrc">29-Jun-15 17:00:23</td><td align="right" class="awrc">703</td><td align="right" class="awrc">    129.1</td></tr>
 <tr><td class="awrnc" scope="row">Elapsed:</td><td class="awrnc"> </td><td align="center" class="awrnc">             540.35 (mins)</td><td class="awrnc"> </td><td class="awrnc"> </td></tr>
 <tr><td class="awrc" scope="row">DB Time:</td><td class="awrc"> </td><td align="center" class="awrc">           2,963.17 (mins)</td><td class="awrc"> </td><td class="awrc"> </td></tr>
 </tbody></table>"""

soup = bsoup(html)
print soup.find_all('td', class_='awrnc')[2].get_text()
# 29-Jun-15 08:00:02

编辑:

考虑到返回表列表的原始代码,只需使用普通的列表索引/切片来获得所需的表。请看下面的例子。我将上面的HTML更改为有三个table具有相同的summary属性。我的代码将返回所有三个,因此我将选择第一个。然后,我将查找与我定义的td匹配的所有td。然后我将使用[2]选择第三个。然后,我将使用get_text()来获取目标td元素内的值。在

^{pr2}$

TL;DR:只需在列表中使用[0]。看来这是你唯一能找到的桌子。之后,您可以再次搜索它,因为它变成了一个有效的BeautifulSoupHTML字符串。在

相关问题 更多 >