为何要对日期进行处理html
前面说过,每一页显示的文章数有20条,而天天更新的也就三四条,若是每次都将20条信息显示出来的话,必然会有不少重复的信息,这样很差,因此我但愿能按日期搜索,好比,我天天早上运行这个程序,我但愿显示的是昨天更新的文章,由于若是显示当天的文章的话,后面还有十几个小时,指不定会更新什么的,因此咱们须要对日期进行处理,方便拿来对比而且按照这个时间来进行搜索python
要实现这个功能,咱们获取的应该有两个时间,昨天的日期、文章发布的日期,先获取昨天的日期,而后拿这个日期与每篇文章发布的日期进行对比,若是匹配的话就能够认为是咱们须要的文章
linux
那么,怎么获取昨天的日期呢
windows
我使用的是linux操做系统,因此经过命令我能够很容易的获取到昨天的时间,就像下面这样:函数
search_date = os.popen(r'date -d"yesterday" +"%Y/%m/%d"').read().strip('\n') print search_date
上面的代码只是适用于Linux系统,windows系统上或许有相似的命令你们能够本身去搜索并实现,可是,这里还有另一种实现的方法,使用python本身的函数,适用于任何系统post
import datetime today=datetime.date.today() oneday=datetime.timedelta(days=1) yesterday=today-oneday date = yesterday.strftime(r'%Y/%m/%d')
这样就可以获取到昨天的日期了,咱们要用这个日期与文章发布日期进行对比,(这应该在循环里面实现,由于咱们有20篇文章,咱们须要对每一篇的发布日期都进行对比),若是两个日期相同,咱们就认为匹配到的是昨天发布的文章,而后,咱们再将这些信息输出,因此,咱们的代码看起来应该像这样学习
#!/usr/bin/env python # -*- coding:UTF-8 -*- __author__ = '217小月月坑' ''' search the article of yesterday(linux) ''' from bs4 import BeautifulSoup import urllib2 import re import os import sys reload(sys) sys.setdefaultencoding( "utf-8" ) # get the source code of html url = 'http://blog.jobbole.com/all-posts/' request = urllib2.Request(url) response = urllib2.urlopen(request) contents = response.read() # get the date of yesterday search_date = os.popen(r'date -d"yesterday" +"%Y/%m/%d"').read().strip('\n') # get url, title, date of the article pattern = re.compile(r'class="archive-title".*?href="(.*?)".*?title="(.*?)">.*?<br />(.*?)<a.*?',re.S) items = re.findall(pattern,contents) i = 0 for item in items: release_date = re.sub(r'\s',"",item[2]).split(r'&')[0] # contrast the date if search_date == release_date: i += 1 print i, item[0], item[1], release_date continue
而后结果是这样的url
第一步,获取咱们想要的文章到这里已经完成了,咱们下面来说讲怎么获取文章正文的内容,通过了前面BS4实例1的学习,我认为这个应该不难操作系统