2015-09-05 51 views
0

所以我有一个页面,下面的HTML,它显然做得很差,但我需要运行一些自动化,其中包括获取下面的日期。使用beautifulsoup来提取难以识别的数据

<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

如果你问如何与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()和使用的解决方案,从Convert datetime to Unix timestamp and convert it back in python一个datetime对象来获取时间戳:

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())) 
+0

完美的作品,非常感谢! – azamatms