python中scrapy框架应用数据存入MySQL

本文介绍使用Scrapy框架爬取当当网商品信息的方法,详细讲解如何定义爬虫Item,设置数据管道将抓取的商品名、价格、链接及评论数存入数据库。

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

本项目用是scrapy框架,以爬取当当网商品信息为例,详细介绍scrapy使用。
本项目把爬到的数据放入数据库中,title与link为字符串格式,价格与评论数为浮点型,方便筛选。

首先:新建dangpjt项目

scrapy startproject dangpjt

新建后可以看到如下框架;
在这里插入图片描述
首先填写item信息:
修改原有代码为:

import scrapy

class DangpjtItem(scrapy.Item):
    # define the fields for your item here like:
    # name = scrapy.Field()
    #商品名称
    name = scrapy.Field()  
    #价格
    price = scrapy.Field()
    商品链接
    link = scrapy.Field()
    商品评论数
    consum = scrapy.Field()
    # pass

其次,修改
在这里插入图片描述
把原代码修改为:

import pymysql
# Define your item pipelines here
#
# Don't forget to add your pipeline to the ITEM_PIPELINES setting
# See: https://doc.scrapy.org/en/latest/topics/item-pipeline.html
class DangpjtPipeline(object):
    def __init__(self):
    #连接数据库passwd自己填写
        self.conn=pymysql.connect(host='localhost',user='root',passwd='*****',db='class',charset='utf8')
    def process_item(self, item, spider):
        conn1=self.conn.cursor()
        name=item["name"]
        price=item["price"]
        link = item["link"]
        consum = item["consum"]
        #遍历列表,储存每个数据
        for i in range(0,len(name)):
            try:
            #修改各自格式
                price1=price[i]
                price1=float(price1[1:-3])
                name1 = name[i]
                if len(name1)>19:
                    name1=name1[0:19]
                link1=link[i]
              
                consum1=consum[i]
                consum1=float(consum1[:-3])
                sql="insert into file (title,price,link,consum) values ('%s','%s','%s','%s')"%(name1,price1,link1,consum1)
                conn1.execute(sql)
                self.conn.commit()
            except Exception as e :
            #接收错误
                print(e)

        return item
    def close_spider(self,spider):
        conn1.close()
        self.conn.close()

继续修改setting内容:
在这里插入图片描述
robotstxt协议,取消注释。修改为false
(仅做参考,鼓励大家遵守协议)

在这里插入图片描述
爬取时间间隔,可以不改(非必要选项)
在这里插入图片描述
不留下cookies,不留痕迹。

在这里插入图片描述
模拟浏览器访问。
在这里插入图片描述
这里一定要启用。很关键。

结束

Scrapy是一个强大的Python爬虫框架,用于高效地抓取网络数据。如果你想要利用Scrapy爬取租房信息将其保存到CSV文件和MySQL数据库,可以按照以下步骤操作: 1. **安装依赖**: - 安装Scrapy库:`pip install scrapy` - 如果需要处理CSV,安装pandas库:`pip install pandas` - 对于MySQL连接,安装mysqlclient或pymysql:`pip install mysql-connector-python` 2. **创建Scrapy项目**: - 使用命令行创建一个新的Scrapy项目:`scrapy startproject rental_scraper` 3. **定义爬虫**: - 在`rental_scraper/spiders`目录下编写Spider,如`rental_spider.py`。设置开始URL、解析规则等,提取租房信息,比如房源标题、价格、地址等。 4. **处理数据**: - 在Spider的解析函数(如parse())中,将获取的数据存入一个字典或者list中。 - 对于CSV,你可以用pandas创建DataFrame,然后使用`to_csv()`方法保存数据: ```python import pandas as pd data = ... # 从解析结果中提取的数据 df = pd.DataFrame(data) df.to_csv('rentals.csv', index=False) # 将数据保存为CSV文件 ``` 5. **连接MySQL**: - 需要在项目的settings.py中配置MySQL连接: ```python DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'your_database_name', 'USER': 'your_username', 'PASSWORD': 'your_password', 'HOST': 'localhost', 'PORT': '', } } ``` - 使用SQLAlchemy或Scrapy的内置支持(如果有的话),例如使用items(Item Pipeline)将数据持久化到数据库: ```python from scrapy.pipelines.sqlitemongo import SqlitePipeline or from scrapy.contrib.pipeline.mysql import MySQLPipeline pipeline_classes = [ MyRentalsPipeline, # 自定义的保存租房数据的管道 SqlitePipeline, # 或者MySQLPipeline ] ``` 6. **自定义管道**: - 创建一个自定义的pipeline(如MyRentalsPipeline),在这个类里,你需要实现`process_item()`方法来处理数据将它们插入到MySQL表中。 7. **运行爬虫**: - 使用`scrapy crawl rental_spider`启动爬虫。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值