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

Using beautifulsoup to extract data that's hard to identify

所以我有一个包含以下 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 时间,但只需抓取它就足够了。

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

如果你问如何用 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.

要获取时间戳,请使用 strptime() 将字符串加载到 datetime 对象中,并使用 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()))