除将爬取到的信息写入文件中之外,程序也可通过修改 Pipeline 文件将数据保存到数据库中。为了使用数据库来保存爬取到的信息,在 MySQL 的 python 数据库中执行如下 SQL 语句来创建 job_inf 数据表:

CREATE TABLE job inf (
id INT (11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
title VARCHAR (255),
salary VARCHAR (255),
company VARCHAR (255),
url VARCHAR(500),
work_addr VARCHAR (255),
industry VARCHAR (255),
company_size VARCHAR(255),
recruiter VARCHAR(255),
publish_date VARCHAR (255)
)

 然后将 Pipeline 文件改为如下形式,即可将爬取到的信息保存到 MySQL 数据库中:

# 导入访问MySQL的模块
import mysql.connector
class ZhipinspiderPipeline(object):
# 定义构造器,初始化要写入的文件
def __init__(self):
self.conn = mysql.connector.connect(user='root', password='32147',
host='localhost', port='3306',
database='python', use_unicode=True)
self.cur = self.conn.cursor()
# 重写close_spider回调方法,用于关闭数据库资源
def close_spider(self, spider):
print('----------关闭数据库资源-----------')
# 关闭游标
self.cur.close()
# 关闭连接
self.conn.close()
def process_item(self, item, spider):
self.cur.execute("INSERT INTO job_inf VALUES(null, %s, %s, %s, %s, %s, \
%s, %s, %s, %s)", (item['title'], item['salary'], item['company'],
item['url'], item['work_addr'], item['industry'],
item.get('company_size'), item['recruiter'], item['publish_date']))
self.conn.commit()

  上面程序中第 19 行代码使用 execute() 方法将 item 对象中的信息插入数据库中。

程序为该 Pipeline 类定义了构造器,该构造器可用于初始化数据库连接、游标;程序还为该 Pipeline 类重写了 close_spider() 方法,该方法负责关闭构造器中初始化的数据库资源。

使用  scrapy crawl job_position  命令启动爬虫,当程序运行结束之后,将会在 python 数据库的 job_inf 表中看到多了 300 条招聘信息。

最新文章

  1. VIM编辑器简单总结
  2. ASP.NET Core 1.0 安装并发布到Centos 7.2 使用jexus 5.8.2
  3. iOS-系统定位功能
  4. python list内容拷贝方法
  5. AFNetworking 使用 核心代码
  6. mysql优化2:列类型选择原则
  7. linux的一些命令,面试经常碰到的
  8. 一对多关联模型,BELONGS_TO
  9. mongodb的搭建
  10. Centos7上部署openstack mitaka配置详解(将疑难点都进行划分)
  11. 【java编程】重写HashCode和equals方法
  12. Others
  13. python多进程(二)
  14. Apache配置虚拟主机httpd-vhosts.conf
  15. JS高级 2
  16. springMVC参数的获取区别
  17. mongodb 学习笔记 3 --- 查询
  18. slave_exec_mode参数对主从复制的影响
  19. MySQL linux错误处理
  20. 【BZOJ3038】上帝造题的七分钟2 线段树

热门文章

  1. js判断参数是否为非数字
  2. Java分布式锁,搞懂分布式锁实现看这篇文章就对了
  3. XML的创建、解析-C语言
  4. Vmware虚拟机中CentOS7与Docker安装图文教程
  5. matplotlib与numpy
  6. python3-列表字典简单练习题
  7. HTML学习总结&基础篇
  8. 个人对【依赖倒置(DIP)】、【控制反转(IOC)】、【依赖注入(DI)】浅显理解
  9. Nginx + Keepalived实现应用高可用负载均衡功能
  10. git status 显示中文乱码