使用 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()))
所以我有一个包含以下 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()))