爬虫mysql数据清洗_爬虫分析之数据存储——基于MySQL,Scrapy

本文介绍了如何使用Scrapy框架配合MySQL进行数据存储,详细讲解了配置MySQL、数据清洗、数据存储的过程。通过编写pipeline,实现了从爬取到存储的流程,包括对薪资数据的整理和对脏数据的过滤。最后讨论了数据存储的方法,包括直接保存到数据库和爬取结束后批量写入的优缺点,并给出了示例代码。
摘要由CSDN通过智能技术生成

配置MySql

关于MySQL在Ubuntu的Pycharm上的配置,可以参考这篇文章中的第三部分

如果上面的步骤处理完毕后找不到你新建的数据库, 可以参照下图配置

17c9241acc71

勾选要显示的Schemas(数据库集合)

数据存储需要用到pymysql模块, 在File->Settings中找到如图的设置页面,点击加号搜索pymysql并安装

17c9241acc71

如何存储

在开始考虑如何存储之前, 我们需要考虑一个问题, 数据存储应该是什么时候要做的事.

假设你已经了解过Scrapy框架, 下面是来自官网对item pipeline的典型应用

清理数据

验证爬取的数据(检查item包含某些字段)

查重(并丢弃)

将爬取结果保存到数据库中

我们要实现的数据存储, 先来试一试能否成功吧

# 你可以参考以下代码编写自己的pipeline

import pymysql

class jobCrawlerPipeline(object):

def process_item(self, item, spider):

'''

将爬取的信息保存到mysql

:param item:

:param spider:

:return: item

'''

# Get data from item

job_name = item['job_name']

company = item['company']

address = item['address']

salary = item['salary']

time = item['time']

# Connecting with local database, change the value if not the same

db = pymysql.connect(

host='localhost',

user='root',

passwd='1320',

db='scrapyDB',

charset='utf8',

cursorclass=pymysql.cursors.DictCursor)

try:

# open the cursor

cursor = db.cursor()

sql = 'INSERT INTO tb_job(job_name,company,address,salary,time)' \

'VALUES ("%s", "%s", "%s", "%s", "%s")' % (job_name,company,address,salary,time)

# execute the sql

cursor.execute(sql)

db.commit()

finally:

# close the connection

db.close()

return item

爬虫尚未结束, 但是通过终端, 我们知道该停下爬虫了.

17c9241acc71

爬取中...

17c9241acc71

存储在MySQL的信息

重新回到爬虫项目的思路

思考整个

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值