Scrapy数据存储到数据库

Scrapy数据存储到数据库

存储数据的三个关键步骤

  • spider获取数据
  • 定义item创建数据结构
  • 定义pipeline处理数据并保存

创建spider并获取数据

目标:获取豆瓣的电影名(仅第一页)

from bs4 import BeautifulSoup

import scrapy

from douban.items import DoubanItem


class Douban250(scrapy.Spider):
    name = "douban250"
    allowed_domains = ["movie.douban.com"]
    start_urls = ["https://movie.douban.com/top250"]

    def parse(self, response):
        soup = BeautifulSoup(response.body, 'lxml')
        hd_tags = soup.find_all('div', class_='hd')
        title = []
        for i in hd_tags:
            title.append(i.find_all('span', class_='title')[0].text)

        douban_item = DoubanItem()
        douban_item['title'] = title
        yield douban_item

解析方式为bs4为例

此时获取到的数据组成一个列表传递给douban_item管道

item接受数据

# item.py
import scrapy


class DoubanItem(scrapy.Item):
    title = scrapy.Field()

pipeline存储数据

# pipeline.py
import pymysql
from itemadapter import ItemAdapter


class DoubanPipeline:
    # 初始化Mysql数据库
    def __init__(self):
        self.conn = pymysql.connect(
            host='127.0.0.1',
            port=3306,
            user='root',
            password='666',
            database='douban',
            charset='utf8'
        )
        # 创建游标
        self.cursor = self.conn.cursor()
	
    # 关闭爬虫方法(提交事务并关闭)
    def close_spider(self, spider):
        self.conn.commit()
        self.conn.close()

    def process_item(self, item, spider):
        # 获取item中的'title' 不存在则为空字符串
        title = item.get('title', '')
        for i in title:
            # 遍历title列表并执行sql语句
            self.cursor.execute(
                'insert into douban250 (title) values (%s)',
                (i,)
            )
        return item

相关推荐

  1. Scrapy数据存储数据库

    2024-04-08 10:48:05       37 阅读
  2. Scrapy与MongoDB的异步数据存储

    2024-04-08 10:48:05       38 阅读
  3. python--scrapy 保存数据 mongodb

    2024-04-08 10:48:05       43 阅读
  4. Scrapy数据挖掘监控和自动化测试

    2024-04-08 10:48:05       35 阅读
  5. Scrapy数据解析(XPath、CSS)

    2024-04-08 10:48:05       42 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-08 10:48:05       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-08 10:48:05       101 阅读
  3. 在Django里面运行非项目文件

    2024-04-08 10:48:05       82 阅读
  4. Python语言-面向对象

    2024-04-08 10:48:05       91 阅读

热门阅读

  1. 人到中年,IT从业者怎么办

    2024-04-08 10:48:05       30 阅读
  2. 猜测生日日期

    2024-04-08 10:48:05       36 阅读
  3. 正则表达式

    2024-04-08 10:48:05       32 阅读
  4. 基于Docker 快速搭建EFK日志中心

    2024-04-08 10:48:05       32 阅读
  5. 利用python抓取小说,爬虫抓取小说

    2024-04-08 10:48:05       30 阅读
  6. 关于APP分发,要取得更好效果需要注意的

    2024-04-08 10:48:05       33 阅读
  7. 深入浅出 -- 系统架构之负载均衡Nginx跨域配置

    2024-04-08 10:48:05       35 阅读
  8. 前后端接口写法(传输数据)

    2024-04-08 10:48:05       35 阅读
  9. Teamcenter 修改缓存文件夹名称及路径的方法

    2024-04-08 10:48:05       69 阅读
  10. css 手写返回箭头

    2024-04-08 10:48:05       35 阅读
  11. 【告警监控】监控,巡检和拨测

    2024-04-08 10:48:05       36 阅读
  12. Unity LayoutRebuilder 强制UI重新布局

    2024-04-08 10:48:05       32 阅读
  13. wpf viewmodel和界面双向通知

    2024-04-08 10:48:05       27 阅读
  14. tx-lcn使用

    2024-04-08 10:48:05       32 阅读
  15. WPF —— FromTo/By动画

    2024-04-08 10:48:05       32 阅读
  16. C#WPF控件Menu详解

    2024-04-08 10:48:05       30 阅读