使用Python

时间:2017-08-29 21:31:18

标签: python html date time web-scraping

python新手,VB7中间

我一直在努力创建一个程序,该程序将根据网址中的文字进行扩展并记录新闻文章。由于我不熟悉语言,我遇到了很多困难,我希望我能在这里找到一些帮助,因为我有其他人。

以下是我正在使用的网页代码示例块。 (对不起,我知道它太丑了。)

<tr><td width="130" align="right" style="white-space:nowrap">Aug-29-17 09:05AM&nbsp;&nbsp;</td><td align="left">
<a href="https://finance.yahoo.com/news/abeona-therapeutics-receives-fda-breakthrough-130500766.html" target="_blank"
class="tab-link-news">Yahoo news</a><span style="color:#aa6dc0;font-size:9px">GlobeNewswire</span> <span class="body-table-news-gain">
+18.95%</span></td></tr><tr><td width="130" align="right" style="white-space:nowrap">Aug-25-17 07:30AM&nbsp;&nbsp;</td><td align="left">
<a href="https://finance.yahoo.com/news/" target="_blank" class="tab-link-news">Corporate News Blog - </a> 
<span style="color:#aa6dc0;font-size:9px">ACCESSWIRE</span> <span class="body-table-news-loss">-5.73%</span></td></tr>

我有Beautifulsoup,请求,并且此时有足够的信心处理我可能需要的任何其他模块。

我现在要弄清楚的是在网页上记录时间和日期,或者在今天的日期检查它,以便我不会阅读旧的新闻。

感谢您的阅读。

3 个答案:

答案 0 :(得分:0)

您需要使用datetime模块。

如果您已经使用日期和时间(&#34; Aug-29-17 09:05 AM&#34;在您的情况下)解析了字符串,请使用datetime.strptime()创建日期时间对象。

mydate = datetime.datetime.strptime('Aug 29 17 09:05AM', '%b %d %y %I:%M%p')

您可以将它与今天的日期 - datetime.now()进行比较。

答案 1 :(得分:0)

如果您的问题是如何使用网站源代码中的响应内容来废弃时间和日期,那么您可以使用bs4这样做:

#!/usr/bin/env python

import sys
reload(sys)
sys.setdefaultencoding('utf-8')

html = '''
<tr>
   <td width="130" align="right" style="white-space:nowrap">Aug-29-17 09:05AM&nbsp;&nbsp;</td>
   <td align="left">
      <a href="https://finance.yahoo.com/news/abeona-therapeutics-receives-fda-breakthrough-130500766.html" target="_blank"
         class="tab-link-news">Yahoo news</a><span style="color:#aa6dc0;font-size:9px">GlobeNewswire</span> <span class="body-table-news-gain">
      +18.95%</span>
   </td>
</tr>
<tr>
   <td width="130" align="right" style="white-space:nowrap">Aug-25-17 07:30AM&nbsp;&nbsp;</td>
   <td align="left">
      <a href="https://finance.yahoo.com/news/" target="_blank" class="tab-link-news">Corporate News Blog - </a> 
      <span style="color:#aa6dc0;font-size:9px">ACCESSWIRE</span> <span class="body-table-news-loss">-5.73%</span>
   </td>
</tr>
'''

import re
from bs4 import BeautifulSoup

soup = BeautifulSoup(html, "html.parser")

for i,j in zip(soup.find_all('tr'), soup.find_all('td', attrs={'align':'left'})):
    print '\n[time and date] => {}'.format(i.td.text)
    print '[Content] => {}'.format(re.sub('<[^>]*>', '', str(j)).replace('\n',' '))
    print '[Link] => {}'.format(j.find('a').get('href'))

这样可以得到结果:

[time and date] => Aug-29-17 09:05AM
[Content] =>  Yahoo newsGlobeNewswire     +18.95%
[Link] => https://finance.yahoo.com/news/abeona-therapeutics-receives-fda-breakthrough-130500766.html

[time and date] => Aug-25-17 07:30AM
[Content] =>  Corporate News Blog -  ACCESSWIRE -5.73%
[Link] => https://finance.yahoo.com/news/

答案 2 :(得分:0)

您可以使用时间模块:

import time
currentTime = time.asctime(time.localtime(time.time()))

它可能看起来令人沮丧,但它的语法实际上非常容易理解。

我希望我能帮到你!