scrapy数据库写入(可用于多个类型的item对象或单个item对象)

该博客详细介绍了如何利用Scrapy爬虫框架将抓取到的数据有效存储到数据库中,无论是处理单个item对象还是多种类型的item对象,都提供了相应的方法和实践案例。

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

# 在项目目录下的items中定义类型,并插入数据,目的在于不用判断不同的item对象,传递过来的item是什么类型,就可以执行对应类型中save函数


# 一级页面图片数据信息
class ImgItem(scrapy.Item):
    #获取的图片链接
    src = scrapy.Field()
    url = scrapy.Field()
    title = scrapy.Field()
    article_nums = scrapy.Field()
    look_nums = scrapy.Field()
    referer = scrapy.Field()

    def save(self, cursor):
        sql = "INSERT INTO section(title, article_nums, look_nums, url, src)VALUES('{}',{},{},'{}','{}')".format(self['title'], self['article_nums'], self['look_nums'], self['url'], self['src'][0])
        cursor.execute(sql)


# 详情页面数据
class ArticleItem(scrapy.Item):
    a_type = scrapy.Field()
    title = scrapy.Field()
    description = scrapy.Field()
    create_time = scrapy.Field()
    look_nums = scrapy.Field()
    href = scrapy.Field()
    referer = scrapy.Field()

    def save(self, cursor):
        sql = "INSERT INTO article(title, a_type, look_nums, descrition, create_time, href)VALUES('{}','{}',{},'{}',
### Scrapy 输出配置 Scrapy 提供了多种灵活的方式来处理和保存抓取到的数据。通过命令行选项 `settings.py` 配置文件,可以轻松调整输出行为。 #### 命令行输出 可以直接使用 `-o` 参数指定输出文件及其格式。例如,将爬虫的结果导出为 JSON 文件: ```bash scrapy crawl myspider -o items.json ``` 此方法简单易用,适用于快速测试小型项目[^1]。 #### 自定义日志级别 为了更好地监控爬虫运行状态,可以通过 `--loglevel` 设置日志等级。例如,在运行单个脚本时启用 INFO 级别的日志记录: ```bash scrapy runspider --loglevel=INFO first.py ``` 这有助于减少不必要的调试信息干扰正常操作[^2]。 #### 使用 Settings 控制输出 `settings.py` 是 Scrapy 项目的全局配置中心,支持对多个方面进行精细调节。以下是几个与输出密切相关的设置: - **FEED_FORMAT**: 定义默认的输出格式,默认值为 jsonlines (每条数据占一行),也可以改为 csv xml。 ```python FEED_FORMAT = 'json' ``` - **FEED_URI**: 指定存储位置,既可以是本地路径又是远程 URL 地址。 ```python FEED_URI = 'file:///path/to/output/items.json' ``` - **CONCURRENT_REQUESTS**: 调整并发请求的数量可能影响性能以及最终结果的一致性。 ```python CONCURRENT_REQUESTS = 16 ``` 上述参数均可以在 `settings.py` 中声明并生效[^3]。 #### 数据过滤与清理 有时需要仅保留满足特定条件的信息。为此,推荐利用 Item Pipeline 功能完成复杂逻辑判断;者借助内置字段验证器剔除不符合预期的内容[^4]。 另外,如果遇到特殊场景比如重复链接访问,则考虑引入去重中间件等功能模块提升效率[^5]。 ### 常见问题解答 当实际应用过程中可能会碰到一些典型难题如下: 1. 如果发现生成的目标文档为空白,请核查是否正确指定了 Feed URI 和 Format 同时确认 Spider 返回 Items 正确无误。 2. 对于超大数据集建议分批次写入数据库而非一次性全部存盘以免内存溢出风险。 3. 当尝试修改 Setting 却未看到变化可能是由于优先级冲突所致——确保所更改设定没有被其他地方覆盖掉。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值