Scrapy爬数据并存储到mysql中

本文介绍了使用Scrapy框架爬取数据并存储到MySQL数据库中的过程,包括遇到的坑及解决办法,如项目创建、items定义、pipelines配置、数据库连接以及spiders编写等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

看这篇文嘉,假设你已经:
1. 安装了Srcapy框架
2. 安装了mysql
3. import了pymysql
后面两个可以参考我的前一篇博客,请移步:Python3.x连接Pymysql

首先来说说我踩的坑

坑1

  我定义好items后,下一步是要将items这个容器引入到我的spider里面。所以要在spider文件中写上这么一句话:

from scrapytest.CourseItems import CourseItem

  scrapytest是我的工程名,CourseItem是我的item的类名。但是这句话在我的notebook里面死活给我报错:

No Module named "scrapytest"

  What?我的scrapytest好好的在那啊。然后我建立一个同层的py文件,就是好的,所以我推测可能在notebook上面没有这种导入吧。

坑2

  我最后爬的数据,根本就存储不到数据库中,所以我检查了几个步骤来排查原因:

1.到底有没有爬到数据?

  我写了一个生成json文件的类,然后去看了我保存下来的json,里面是有数据的,所以是数据库插入的问题。

2.在连接“数据池“的时候出现了问题?

  我在连接函数的内部打了log,结果可以打印log,所以连接数据库没问题。

3.数据库启动了没?

  我重新写了一个简单的插入,用的是这里同样的代码,不过是把相对的数据改为绝对的数据。结果是可以存储的。所以得出结论,数据库人家好好的。

4.数据的问题?

  由上一步的一些结论,我发现我的相对数据不行,但是改成绝对数据的话,就可以存储。所以我的数据格式有问题。我打印了我的数据,发现都是list,而且price还是list里面套着list。那么就知道是price的格式不对,导致我老是报错:(此处感谢帮我调了一天bug的orangesdk[可调戏])


这里写图片描述

  说我没有送进去数据,它必须要一个数据才行。所以我追根溯源,去看price爬取的时候我写的xpath:

item['price'] = response.xpath('//div[@class="item-mod"]/div[@class="favor-pos"]/p[@class="price"]/span/text()').extract()

  我

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值