python简单爬虫:爬取并统计自己博客页面的信息(四)

原创 2018年04月17日 11:43:16

python简单爬虫:爬取并统计自己博客页面的信息(三)中介绍了html解析器的简单实现,接下来介绍mysql模块、结果输出模块,最后展示一下结果。

10. 数据库模块:mysql.py

因为结果输出模块中使用到了mysql,因此在讲结果输出模块之前,先讲mysql模块。

  • mysql是一个关系型数据库管理系统(DBMS),而数据库则是通过DBMS创建和操纵的容器。
  • 一个DBMS中可以有很多个数据库,每一个数据库中可以有很多表(tables)。表是一种结构化的文件,用来存储某种特定类型数据的结构化清单。简单理解,一个表可以看作是大家熟悉的excel文件中的一个sheet。
  • 为了方便,我在本地的mysql中手动创建了一个数据库,并在数据库中创建了一个用来存储我的csdn博客数据的表格(只有表头)
# 使用root用户登录数据库管理系统
:~$ mysql -uroot -plinux123
mysql> create database yvettre;     # 创建名为yvettre的数据库
mysql> use yvettre;                 # 使用yvettre数据库
mysql> create table if not exists csdn (datetime DATETIME, origin int, fans int, likey int, comment int, views int, score int, rank int, level int);                      # 创建名为csdn的表格
  • 在python中使用mysql,需要PyMySQL这个模块:pip install PyMySQL
  • 下面举个栗子来说明怎样简单使用python对已有的mysql数据库进行操作
# coding=utf-8
import pymysql

def main():
    # 连接本地已有的数据库
    db = pymysql.connect("localhost", "root", "linux123", "yvettre")
    # 获取cursor光标
    cursor = db.cursor()

    # 在已有的数据库yvettre中创建一个test表格,表头为data、id,数据类型都是int
    # 构建创建表格的sql语句
    sql = 'create table if not exists test (data int, id int)'
    # 执行sql语句
    cursor.execute(sql)

    # 向test表格添加数据
    sql = 'insert into test (data, id) values (100, 1)'
    # 执行sql语句
    try:
        cursor.execute(sql)
        # 提交到数据库执行
        db.commit()
        print 'sucessfully!'
    except Exeption, e:
        # 如果发生错误则回滚
        db.rollback()
        print e
        print 'failed!'

    # 关闭数据库连接
    db.close()

if __name__ == '__main__':
    main()

运行结果:
spider-mysql-test

11. 结果输出模块:outputer.py

  • 结果输出器用于将解析到的有价值的数据存储到方便使用的指定文件或数据库中
  • 本文中的输出结果一方面存为一个csv,用于给自己发送邮件;另一方面存储到本地的mysql数据库中,用于以后的整体统计查询
  • 存放在csv中使用到pandas模块:pip install pandas
# 只贴出output函数,具体实现可到github(https://github.com/Yvettre/spiderMyCsdn)上查看
def output(self, data):
    # data是一个dict
    time_now = datetime.datetime.now()
    data['datetime'] = '\"' + time_now.strftime('%Y-%m-%d %H:%M:%S') + '\"'

    # to csv
    df = pd.DataFrame(data.items(), columns=['item','content'])
    bak_file = './result/output_%s.csv'%time_now.strftime('%Y-%m-%d-%H-%M-%S')
    df.to_csv(bak_file, index=False, header=False, sep='\t', mode='wb', encoding='utf-8')  # for bak_up
    df.to_csv('./result/output.csv', index=False, header=False, sep='\t', mode='wb', encoding='utf-8')
    logger.info('Bak_file: %s' %bak_file)

    # to mysql
    sql = mysql.Mysql()
    sql.insert_data(table_name, data)
    logger.info('Output to mysql is done.')

12. 关于crontab定时任务

关于crontab定时任务,可以参考Centos使用crontab定时任务

  • 定时执行脚本cronTask.sh
#!/bin/bash
# usage: ./cronTask.sh
# change 'ding_yanfang@outlook.com' to any email adress
python main.py
cat result/output.csv | mail -s 'Today your Csdn Blog gift' ding_yanfang@outlook.com
  • crontab任务设定
:~$ crontab -l
30 10 * * * cd /home/xxx/spiderMyCsdn && ./cronTask.sh

13. 结果展示

  • 本地mysql数据库结果(中间少了几天的结果是因为服务器关机了。。=。 =)
    spider-result-mysql
  • 本地result/结果
    spider-result
  • 邮件结果
    spider-email

至此,使用python实现简单爬虫自动获取自己的csdn博客信息并统计通知的功能已经简单实现~

整个工程代码可戳github:spiderMyCsdn

可能有些地方会有更好的实现,只是需要实现的任务较为简单,以后继续学习~


声明:本文代码是在本人很久之前学习的一个教程的基础上根据自己的目的修改完善的(增加了日志模块、配置模块和mysql模块以及使用继承方法增强代码扩展性),在此声明表示对原创作者的尊重

Python爬虫实战一之使用Beautiful Soup抓取百度招聘信息并存储excel文件

开发工具: python版本:python2.7 开发工具:Eclipse 开发需求: 1、爬取百度招聘下的招聘信息:岗位名称、工作地点、公司名称、薪资、发布时间 2、超链接招聘具...
  • xianjie0318
  • xianjie0318
  • 2017-07-25 17:19:33
  • 908

Python爬虫爬取一篇韩寒新浪博客

网上看到大神对Python爬虫爬到很多有用的信息,觉得很厉害,突然对想学Python爬虫,虽然自己没学过Python,但在网上找了一些资料看了一下,看到爬取韩寒新浪博客的视频,共三集,第一节讲爬取一篇...
  • hurmishine
  • hurmishine
  • 2016-03-05 17:42:14
  • 2497

Python爬虫爬取博客访问量

实现功能: 查看自己活着别人CSDN中每篇博客的访问量 语言: Python3.5 用到的库: requests re 步骤: 1.找到数据源:找到一个现实所有博客的页面,在一篇博客的...
  • BoomHankers
  • BoomHankers
  • 2017-01-03 19:36:05
  • 1539

PYTHON爬虫 抓取论坛关键字出现频率

前言:之前学习了用python爬虫的基本知识,现在计划用爬虫去做一些实际的数据统计功能。由于前段时间演员的诞生带火了几个年轻的实力派演员,想用爬虫程序搜索某论坛中对于某些演员的讨论热度,并按照日期统计...
  • panfengzjz
  • panfengzjz
  • 2018-02-11 23:00:21
  • 142

Hello Python!用python写一个抓取CSDN博客文章的简单爬虫

网络上一提到python,总会有一些不知道是黑还是粉的人大喊着:python是世界上最好的语言。最近利用业余时间体验了下python语言,并写了个爬虫爬取我csdn上关注的几个大神的博客,然后利用le...
  • yazhi1992
  • yazhi1992
  • 2016-06-25 00:14:59
  • 7355

python爬虫爬取csdn博客专家所有博客内容

python爬虫爬取csdn博客专家所有博客内容: 全部过程采取自动识别与抓取,抓取结果是将一个博主的所有 文章存放在以其名字命名的文件内,代码如下 #coding:utf-8 impor...
  • Gamer_gyt
  • Gamer_gyt
  • 2015-08-27 21:18:41
  • 3212

使用简单的python语句编写爬虫 定时拿取信息并存入txt

python 定时爬虫并保存数据
  • Daivon_Up
  • Daivon_Up
  • 2017-05-06 14:25:12
  • 2466

【Python数据分析】简单爬虫,爬取知乎神回复

看知乎的时候发现了一个 “如何正确地吐槽” 收藏夹,里面的一些神回复实在很搞笑,但是一页一页地看又有点麻烦,而且每次都要打开网页,于是想如果全部爬下来到一个文件里面,是不是看起来很爽,并且随时可以看到...
  • qq_37267015
  • qq_37267015
  • 2017-05-08 08:54:50
  • 1578

python3 [入门基础实战] 爬虫入门之爬取豆瓣读书随笔页面

话不多说,先上今晚的代码# encoding=utf8 import requests import re from bs4 import BeautifulSoup# 此处是爬去豆瓣读书的随笔页面 ...
  • snake_son
  • snake_son
  • 2017-06-24 00:21:57
  • 623

python爬虫(4)——统计并可视化数据

数据统计的三步走爬取数据的三字真言 **整理清洗数据; 更新数据库; 数据的可视化;** 下面我几句我这几天所的可视化数据统计的知识,来简单总结一下知识点:1、整理清洗数据我们上代码:...
  • depers15
  • depers15
  • 2016-08-16 22:03:25
  • 3944
收藏助手
不良信息举报
您举报文章:python简单爬虫:爬取并统计自己博客页面的信息(四)
举报原因:
原因补充:

(最多只允许输入30个字)