Python scrapy爬虫数据保存到MySQL数据库
2023-09-27 14:22:25 时间
除将爬取到的信息写入文件中之外,程序也可通过修改 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 条招聘信息。
相关文章
- Python之Mysql及SQLAlchemy操作总结
- 浅淡python中with的用法,上下文管理器
- 【列表倒序】详解python列表倒序的几种方法(切片、reverse()、reversed())
- 用Python操作MySQL(pymysql)
- 使用Python、Django和MySQL开发网站的基本步骤
- python tqdm 参数详细说明
- python+ mysql存储二进制流的方式
- python一些开源特色库
- 用Python删除本地目录下某一时间点之前创建的文件
- 自学 Python 两个月的总结
- Python之使用Pandas库实现MySQL数据库的读写
- Python编程:records批量插入数据到mysql
- 【mysql-python】安装+基本使用
- python 连接 mysql
- python操作MySQL数据库
- [Python]pymysql连接MySQL数据库
- Python在mysql中进行操作是十分容易和简洁的
- 【Python】连接MySQL数据库(初步测试)
- python连接mysql数据库,并进行添加、查找数据
- Python实现Mysql数据库连接池
- pydev-python 链接mysql数据库(mac系统)
- Python 操作 MySQL 数据库
- Python中Pandas通过read_sql方法从Mysql或Oracle数据库中读取数据帧(DataFrame)
- 7.2 Configuring the MySQL database from Python
- 7.1 Connecting to a MySql database from Python
- Python访问MySQL数据库
- 为什么python程序中查询MySQL的语句在数据表数据增加之后,查询到的结果却没变,还是原来的数据量?