Python scrapy爬虫数据保存到MySQL数据库
2024-08-28 21:48:32
除将爬取到的信息写入文件中之外,程序也可通过修改 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 条招聘信息。
最新文章
- VIM编辑器简单总结
- ASP.NET Core 1.0 安装并发布到Centos 7.2 使用jexus 5.8.2
- iOS-系统定位功能
- python list内容拷贝方法
- AFNetworking 使用 核心代码
- mysql优化2:列类型选择原则
- linux的一些命令,面试经常碰到的
- 一对多关联模型,BELONGS_TO
- mongodb的搭建
- Centos7上部署openstack mitaka配置详解(将疑难点都进行划分)
- 【java编程】重写HashCode和equals方法
- Others
- python多进程(二)
- Apache配置虚拟主机httpd-vhosts.conf
- JS高级 2
- springMVC参数的获取区别
- mongodb 学习笔记 3 --- 查询
- slave_exec_mode参数对主从复制的影响
- MySQL linux错误处理
- 【BZOJ3038】上帝造题的七分钟2 线段树