每天自动获取最新一条。
封装了下代码:
def get_today_word():
today = datetime.date.today()
word=Word.objects.filter(add_time__year=today.year,
add_time__month=today.month,
add_time__day=today.day).first()
if word:
return (json.loads(word.content),today.weekday()+1)
else:
s = requests.Session()
url = "https://api.hibai.cn/api/index/index"
data = {
"TransCode": "030111", "OpenId": "123456789", "Body": ""
}
ret = s.post(url=url, data=data).content.decode('utf-8')
Word.objects.create(content=ret)
return (json.loads(ret),today.weekday()+1)
返回格式是一个元祖,第一个参数是从韩少的ONE接口抓回来的json字符串。
第二个参数是自己拼出的今天的星期。
建立了一张word数据表,把每天的数据存储下来;另一个好处是,只需要第一次去爬取,第二次打开页面,直接从数据库获取json数据就行了。
class Word(models.Model):
'''
每日一句
'''
content = models.TextField(verbose_name=u'json内容')
add_time = models.DateTimeField(default=datetime.now, verbose_name="添加时间")
class Meta:
verbose_name = "每日一句"
verbose_name_plural = verbose_name
def __str__(self):
return self.add_time.strftime('%Y-%m-%d')
View中调用获取:
word = get_today_word()
传到template中只需要render对应的字段就行了。
<a href="{{ word.0.Body.url }}">
<div class="sentence"><strong>每日一句</strong>
<h2>{{ word.0.Body.date|slice:":10" }} 周{{ word.1 }}</h2>
<p>{{ word.0.Body.word }} --- {{ word.0.Body.word_from }}</p>
</div>
</a>