前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >超简单的shell爬虫示例

超简单的shell爬虫示例

作者头像
呼延十
发布2019-06-26 15:42:27
2.1K0
发布2019-06-26 15:42:27
举报
文章被收录于专栏:呼延呼延

首先,我并不太会爬虫,shell编程也是一知半解,这次纯粹是需求驱动。

因此,在下方的实现方法并不一定是最优解,甚至是比较笨的解决方法,但是仍然决定记录下来。

需求

我的一部分博客偶尔也发在csdn上面,然后由于自己的”小心思”,我老是想知道自己在csdn的排名及浏览量是多少,每次登陆去查看显得太烦了,因此写了个shell脚本,每天自动抓取自己账号的浏览量及排名存进mysql中。

这样就可以直接在服务器上的mysql中查看排名,以方便后续扩展,无论是写个接口方便自己查看,还是用图标展示,都方便许多。

实现

1.在mysql中创建数据库

代码语言:javascript
复制
CREATE TABLE `csdn` (
  `id` int(20) NOT NULL AUTO_INCREMENT COMMENT '自增id',
  `rank` int(20) NOT NULL DEFAULT '1' COMMENT '排名',
  `view` int(20) NOT NULL DEFAULT '1' COMMENT '浏览量',
  `date` varchar(128) NOT NULL DEFAULT 'wrong' COMMENT '日期',
  `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_at` timestamp NOT NULL DEFAULT '2018-01-01 00:00:00' ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=46 DEFAULT CHARSET=utf8

2.编写shell脚本

代码语言:javascript
复制
#获取排名
rank=`curl https://me.csdn.net/qq_24629159 | grep -B1 "排名" | grep -o "[0-9]*[1-9][0-9]*"`
#获取浏览量
view=`curl https://me.csdn.net/qq_24629159 | grep -B1 "访问" | grep -o "[0-9]*[1-9][0-9]*"`
#日期
date=`date +%Y%m%d`
#打印日志
echo "${date}的排名为${rank},浏览量为${view}"
#插入到数据库
mysql -u root -p******* -D mydb -e "insert into csdn(rank,view,date) values ("$rank", "$view","${date}")"

在获取csdn上的数据时,使用了简单粗暴的grep,原理是先获取我个人页面的所有源码,然后根据源码发现,排名数字在排名字符串上一行,因此搜索得到上一行,之后再拿到的一行里面匹配整数。

csdn个人页面的源码如下:

3.设置定时执行

定时执行我们使用unix系统自带的corntab。

执行corntab -e,打开编辑页面,之后在文件中添加一行30 3 * * * /bin/bash /usr/huyan/csdn_rank.sh >> /usr/huyan/csdn_rank.log,这代表着在每天的凌晨三点半执行该脚本并将日志输出到后面的文件中。

之后重启crontab以使我们的任务生效service cron restart.

好了,到了这里就完成啦,以后就可以再数据库中直接看到以往的排名信息及浏览量了。

完。

ChangeLog

2018-11-16 完成

以上皆为个人所思所得,如有错误欢迎评论区指正。

欢迎转载,烦请署名并保留原文链接。

联系邮箱:huyanshi2580@gmail.com

更多学习笔记见个人博客——>呼延十

var gitment = new Gitment({ id: '超简单的shell爬虫示例', // 可选。默认为 location.href owner: 'hublanker', repo: 'blog', oauth: { client_id: '2297651c181f632a31db', client_secret: 'a62f60d8da404586acc965a2ba6a6da9f053703b', }, }) gitment.render('container')



本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 需求
  • 实现
    • 1.在mysql中创建数据库
      • 2.编写shell脚本
        • 3.设置定时执行
          • ChangeLog
      相关产品与服务
      云数据库 SQL Server
      腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档