python解析「ONE·一个」 —— 为博客添加每日鸡汤

2019年5月19日 Jerry 4665 2021年1月13日

       一个每天面对996的工作和头发脱落的屌丝程序员,每天喝点鸡汤是很有必要的。「ONE·一个」是由韩寒监制 ,原《独唱团》主创成员共同制作的一款文艺生活App,我们可以解析他的网页版,获取每日一句添加到我们的博客中作为每日鸡汤。

       网页版的 「ONE·一个」 地址在这里,域名也是很有个性:http://wufazhuce.com/

一、分析网页源代码

右键查看网页源代码,可以看到如下主要内容:

<div class="carousel-inner">
   <div class="item active">
      <a href="http://wufazhuce.com/one/2453"><img class="fp-one-imagen" src="http://image.wufazhuce.com/FuZdQPkVrjTHBVrABNVN3SITeuF6" alt="" /></a>                        
      <div class="fp-one-imagen-footer">摄影    </div>
   <div class="fp-one-cita-wrapper">
      <div class="fp-one-titulo-pubdate">
          <p class="titulo">VOL.2416</p>
          <p class="dom">19</p>
          <p class="may">May 2019</p>
      </div>
      <div class="fp-one-cita">
          <a href="http://wufazhuce.com/one/2453">以清净心看世界,以欢喜心过生活,<br />
以平常心生情味,以柔软心除挂碍。</a> 
       </div>
       <div class="clearfix"></div>
       </div>
   </div>
   <div class="item">
      <a href="http://wufazhuce.com/one/2447"><img class="fp-one-imagen" src="http://image.wufazhuce.com/FmNkNdQGl5noSOg8WeHtoNDWUkO1" alt="" /></a>                        
      <div class="fp-one-imagen-footer">摄影   </div>
      <div class="fp-one-cita-wrapper">
          <div class="fp-one-titulo-pubdate">
            <p class="titulo">VOL.2415</p>
            <p class="dom">18</p>
            <p class="may">May 2019</p>
           </div>
      <div class="fp-one-cita">
         <a href="http://wufazhuce.com/one/2447">给自己时间,不要焦急,一步一步来,一日一日过,请相信生命的韧性是惊人的,跟自己向上的心去合作,不要放弃对自己的爱护。</a>  
      </div>
      <div class="clearfix"></div>
      </div>
</div>

可以看到,每天的内容主要有几部分:图片链接、VOL期号、发布日期、文字内容等。我们这里需要他的最新的文字内容。看下他的规律,基本格式都是如下格式:

<a href="http://wufazhuce.com/one/2453">以清净心看世界,以欢喜心过生活,<br />以平常心生情味,以柔软心除挂碍。</a></div>

二、编写正则表达式

于是直接解析,代码如下:

#! /usr/bin/python3
# coding: UTF-8

import requests
import re

def getInfo(url):
    r = requests.get(url)
    r.encoding = 'utf-8'
    res = r.text
    list = re.findall(r'<a href="http://wufazhuce.com/one/([\w\W]*?)a>',res)
    for i in list:
        print(i)

getInfo("http://wufazhuce.com")

       由于这里我也不清楚他的“http://wufazhuce.com/one/”后面加的数字是有啥规律,所以直接暴力解析了。。。有点挫,大家或许有更好的办法。末尾解析到“a>”是为了更方便的二次解析。

       这里最开始正则表达式我写了个(.+?),结果是有问题的。因为他的文本中可能有换行,而 ’.‘ 是只能匹配除了换行之外的任意字符,研究半天才看明白。([\w\W]*?) 这个是匹配所有字符。

       正则表达式还是需要多多练习使用啊!上述代码可以看到匹配到的字符串如下:

2453"><img class="fp-one-imagen" src="http://image.wufazhuce.com/FuZdQPkVrjTHBVrABNVN3SITeuF6" alt="" /></
2453">以清净心看世界,以欢喜心过生活,<br />
以平常心生情味,以柔软心除挂碍。</
2447"><img class="fp-one-imagen" src="http://image.wufazhuce.com/FmNkNdQGl5noSOg8WeHtoNDWUkO1" alt="" /></
2447">给自己时间,不要焦急,一步一步来,一日一日过,请相信生命的韧性是惊人的,跟自己向上的心去合作,不要放弃对自己的爱护。</
2444"><img class="fp-one-imagen" src="http://image.wufazhuce.com/FmDRhuIK_mfJ9xs5iq8g-gfAA0nd" alt="" /></
2444">人终究是一个孤独的个体,纵使你已经拥有了他人的怀抱。这其中,也许人与人之间唯一不同的,只是你把孤独藏在哪里。 </
2452"><img class="fp-one-imagen" src="http://image.wufazhuce.com/FtrSsx4XrnGtHNJNOS9nH1ncZ6U8" alt="" /></
2452">我们或许都曾天真地以为爱是定数,<br />
就像确定烘焙配方。<br />
但幸福是不可预计,<br />
是全心付出然后将期望交付于未知。<br />
</
2448"><img class="fp-one-imagen" src="http://image.wufazhuce.com/FruPKzpfLPd23sRF5XtLv8oStUIm" alt="" /></
2448">人生如梦,我投入的却是真情。</
2442"><img class="fp-one-imagen" src="http://image.wufazhuce.com/FjlN3qEQngUwdr7163SLykuwpaYo" alt="" /></
2442">当人们期待着一件好东西到来时,会发现它往往来得既迟缓又艰难,而且它还会附带着各种各样令人急不得、恼不得的细琐麻烦的事,和一切人们在预想中没有顾及到的现实的灰尘。</
2440"><img class="fp-one-imagen" src="http://image.wufazhuce.com/FlogLFLcYDTRl3vd4ZCye4hN7qHl" alt="" /></
2440">我们听到的一切都是一个观点,不是事实。我们看见的一切都是一个视角,不是真相。</

      我这里只要每天最新的一句,可以看到最新的一句话是第二个字段,也就是list[1],于是继续解析一下:

words = "\n".join(re.findall(r'">([\w\W]*?)</',list[1]))
print('words = ', words)

解析打印结果:

words =  以清净心看世界,以欢喜心过生活,<br />
以平常心生情味,以柔软心除挂碍。

      到这里,我们就得到了想要的每日鸡汤,最后加到博客网站中即可。

三、设置自动任务

       每日鸡汤要自动更新到网站中,依靠博主每天自己加那还是太累了。于是想了个简单的实现方法,将这个脚本加入到linux的定时任务中,每天的8点左右获取每日鸡汤写入文件,网页加载时读取文件即可。这里使用的时linux的crontab 来实现定时任务的执行。crontab的相关操作改天再详细写一下,简单的操作如下:

~# crontab -e

添加下面一句即可:
# 每天早上8点7分 执行one.py 来获取one的每日一句
7 8 * * * /home/one.py


/*
crontab启动:/etc/init.d/cron start  ( service cron start )

crontab重启: /etc/init.d/cron  restart  (service cron restart )

crontab关闭: /etc/init.d/cron  stop  ( service cron stop )
*/

      大功告成,每日鸡汤~喝喝喝!!!(不知道有没有什么bug,过几天看看~)


原创文章,转载请注明出处: https://jerrycoding.com/article/python-one

微信
jerry微信赞助
支付宝
jerry支付宝赞助

您尚未登录,暂时无法评论。请先 登录 或者 注册

0 人参与 | 0 条评论