使用beautifulsoup提取难以识别的数据

时间:2015-09-05 21:59:13

标签: python html beautifulsoup html-parsing

所以我有一个包含以下HTML的页面,它显然做得很差但我需要运行一些自动化,其中一部分包括获取下面的日期。

<tr>
     <td class="bold">
        Last Login
     </td>
     <td colspan="3" class="usual">
        4/1/2011 at 07:01:11 AM         </td>
  </tr>

理想情况下,我想提取第二个<td>的内容,然后将其转换为Unix时间,但抓住它就足够了。

我认为这可以用正则表达式来完成,但你必须重复几次才能完成内容。

1 个答案:

答案 0 :(得分:1)

如果您问如何使用BeautifulSoup找到所需的元素,我实际上会根据Last Login单元格文本找到它,听起来非常可靠(尽管我不知道大局是什么是):

import re

from bs4 import BeautifulSoup

data = """
<tr>
     <td class="bold">
        Last Login
     </td>
     <td colspan="3" class="usual">
        4/1/2011 at 07:01:11 AM         </td>
</tr>
"""

soup = BeautifulSoup(data)
last_login = soup.find("td", text=re.compile(r"Last Login")).find_next_sibling("td").get_text(strip=True)
print last_login

打印4/1/2011 at 07:01:11 AM

要获取时间戳,请使用datetime将字符串加载到strptime()对象中,并使用Convert datetime to Unix timestamp and convert it back in python中的解决方案来获取时间戳:

from datetime import datetime
import time

last_login_date = datetime.strptime(last_login, "%m/%d/%Y at %H:%M:%S %p")
print(time.mktime(last_login_date.timetuple()))