10.5 Python导出爬取的数据至数据库并绘图分析

5、导出爬取的数据至数据库并绘图分析

1)导出爬取的数据至数据库

需求
步骤
(1)修改 pipeline.py 文件(输出到数据库)
  1. 获取数据连接
    • 导入sqlite3模块
    • 重写 Pipeline 的构造方法,获取数据库连接,并获取执行 SQL 语句的游标
  2. 使用游标将数据写入数据库
    • 重写 process_item(self, item, spider) 方法,在该方法中调用游标将数据插入数据库
  3. 关闭数据库资源
    • 重写 close_spider(self, spider) 方法,在该方法中关闭游标,关闭数据库连接
# -*- coding: utf-8 -*-
import sqlite3

class ZhipinspiderPipeline(object):
    # 1.获取数据连接
	def __init__(self):
		self.conn = sqlite3.connect('jobs.db')    # 连接数据库
		self.c = self.conn.cursor()               # 打开游标
        
		# 若数据库中没有表,则建立数据表
		self.c.execute('create table if not exists job_tb('
			+ 'id integer primary key autoincrement,'
			+ 'title,'
			+ 'salary,'
			+ 'company,'
			+ 'url,'
			+ 'work_addr,'
			+ 'industry,'
			+ 'company_size,'
			+ 'recruiter)')
	# 2.使用游标将数据写入数据库
	def process_item(self, item, spider):
		self.c.execute('insert into job_tb values(null, ?, ?, ?, ?, ?, ?, ?, ?)',
			(item['title'], item['salary'], item['company'], item['url'], item['work_addr'], item['industry'], 
			item['company_size'], item['recruiter']))
		self.conn.commit()

	# 3.关闭数据库资源
	def close_spider(self, spider):
		print('-------关闭数据库资源-------')
		self.c.close()
		self.conn.close()
(2)运行Spider项目
  • cmd 窗口下:

    F:
    cd F:\PycharmProjects\ZhipinSpider\ZhipinSpider
    scrapy crawl job_position

  • 数据库文件 jobs.db 文件:

    在这里插入图片描述

2)使用Pygal绘图分析

需求:
  • 统计各行业所包含的岗位数量并用饼状图展示
步骤:
  1. 链接数据库读取招聘信息
  2. 统计各行业岗位数
  3. 创建、配置、生成 Pygal 图

创建 …\ZhipinSpider\ZhipinSpider\job_picture.py 文件

# -*- coding: utf-8 -*-
import sqlite3, pygal

conn = sqlite3.connect('jobs.db')
cur = conn.cursor()

cur.execute("select * from job_tb")         # 执行查询

# 该字典{key:value,...}----{行业名:该行业岗位数,...}
job_dict = {}
for job in cur:
    industry = job[6]     # 获取所属行业
    # 若字典中已有该行业的信息,将其岗位数加一
    if industry in job_dict:
        job_dict[industry] += 1
    # 否则,该行业是第一次统计
    else:
        job_dict[industry] = 1

pie = pygal.Pie()        # 创建Pygal图(饼图)
other_num = 0            # 其他行业岗位数
for industry in job_dict.keys():
    # 如果该行业内就业岗位数小于5,归为其他行业
    if job_dict[industry] < 5:
        other_num += job_dict[industry]
    else:
        pie.add(industry, job_dict[industry])
pie.add('其他行业', other_num)

pie.title = '北京地区各行业的热门招聘分析图'
pie.legend_at_bottom = True

pie.render_to_file('job.svg')     # 输出到图片

用浏览器打开 job.svg 文件

在这里插入图片描述

课程概述教会学员快速学会python数据分析,覆盖python基础,pandas,seaborn,matplotlib,SQL,sqlite,lambda等知识。课程是数据科学家居家必备的军火库。课程定期更新,大部分视频分辨率支持2K超清,学员可以看清每一行代码。 适合人群python数据科学从业人员,数据分析师,统计 学习计划和方法1.每天保证1-2个小时学习时间,预计7-15天左右可以学习完整门课程(不同基础学生时间差异较大)。2.每节课的代码实操要保证,建议不要直接复制粘贴代码,自己实操一遍代码对大脑记忆很重要,有利于巩固知识。3.第二次学习时要总结上一节课内容,必要时做好笔记,加深大脑理解。4.不懂问题要罗列出来,先自己上网查询,查不到的可以咨询老师。 作者介绍Toby,持牌照金融公司担任模型验证专家,国内最大医药数据中心数据挖掘部门负责人!和清华大学出版社,重庆儿科医院,中科院教授,赛柏蓝保持慢病数据挖掘项目合作!管理过欧美日中印巴西等国外药典数据库,马丁代尔数据库,FDA溶解度数据库,临床试验数据库,WHO药物预警等数据库。原创公众号(python风控模型) 课程概述教会学员快速学会python数据分析,覆盖python基础,pandas,seaborn,matplotlib,SQL,sqlite,lambda等知识。课程是数据科学家居家必备的军火库。课程定期更新,大部分视频分辨率支持2K超清,学员可以看清每一行代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值