Django+scrapy,scrapy爬取的数据通过Django的模型保存到数据库

首先确认已经安装好Django和scrapy
创建一个Django项目和Django应用

django-admin startproject django_scrapy_test
python manage.py startapp novel_test

进入setting进行应用的注册和数据库配置

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'novel_test',#注册应用
]
#数据库配置
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'novel_test',
        'USER':'root',
        'PASSWORD':'123456',
        'HOST':'localhost',
        'PORT':3306
    }
}

然后创建scrapy

scrapy startproject scrapy_novel
cd scrapy_novel
scrapy genspider novel_spider www.xxx.com

创建好的目录如下
在这里插入图片描述
进入novel_test下面的models.py,设计模型:

from django.db import models

# Create your models here.

class Novel(models.Model):
    novel_name = models.CharField(max_length=100,verbose_name='小说名称')
    author = models.CharField(max_length=50,verbose_name='作者')

    class Meta():
        db_table = 'novel'
        verbose_name = '小说'
        verbose_name_plural = verbose_name

    def __str__(self):
        return self.novel_name

进行迁移

python manage.py makemigrations
python manage.py migrate

迁移完成,查看数据库是否有了相应的表

mysql> show tables;
+----------------------------+
| Tables_in_novel_test       |
+----------------------------+
| auth_group                 |
| auth_group_permissions     |
| auth_permission            |
| auth_user                  |
| auth_user_groups           |
| auth_user_user_permissions |
| django_admin_log           |
| django_content_type        |
| django_migrations          |
| django_session             |
| novel                      |
+----------------------------+
11 rows in set (0.00 sec)

然后对scrapy的设置文件进行,在设置文件中加上以下内容(关于爬虫的一些设置如机器人协议,输出日志等这里就不详细说了)

import os
import sys
sys.path.append(os.path.dirname(os.path.abspath('.')))
os.environ['DJANGO_SETTINGS_MODULE'] = 'django_scrapy_test.settings'    # 项目名.settings
import django
django.setup()

编写爬虫文件,这时可以将Django的模型类导入了

import scrapy

from novel_test.models import Novel #从Django导入的模型类
class NovelSpiderSpider(scrapy.Spider):
    name = 'novel_spider'
    #allowed_domains = ['www.xxx.com']
    start_urls = ['https://www.xbiquge.la/xuanhuanxiaoshuo/']

    def parse(self, response):
        li_list = response.xpath('//div[@class="r"]/ul/li')
        for li in li_list:
            novel_name = li.xpath('./span[1]/a/text()').extract_first()
            author = li.xpath('./span[2]/text()').extract_first()
            
            #使用模型类存入数据库
            Novel.objects.create(novel_name=novel_name,author=author)

然后执行爬虫

scrapy crawl novel_spider

爬虫执行后,查看数据库

mysql> select * from novel;
+----+--------------------------------------+--------------------+
| id | novel_name                           | author             |
+----+--------------------------------------+--------------------+
|  1 | 伏天氏                               | 净无痕             |
|  2 | 牧神记                               | 宅猪               |
|  3 | 武炼巅峰                             | 莫默               |
|  4 | 沧元图                               | 我吃西红柿         |
|  5 | 圣墟                                 | 辰东               |
|  6 | 全职法师                             ||
|  7 | 叶辰孙怡夏若雪                       | 全文免费阅读       |
|  8 | 终极斗罗                             | 唐家三少           |
|  9 | 元尊                                 | 天蚕土豆           |
| 10 | 仙武帝尊                             | 六界三道           |
| 11 | 帝霸                                 | 厌笔萧生           |
| 12 | 万古神帝飞天鱼                       | 飞天鱼             |
| 13 | 都市极品医神                         | 风会笑             |
| 14 | 左道倾天                             | 风凌天下           |
| 15 | 斗罗大陆                             | 唐家三少           |
| 16 | 临渊行                               | 宅猪               |
| 17 | 人皇纪                               | 皇甫奇             |
| 18 | 大主宰                               | 天蚕土豆           |
| 19 | 武动乾坤                             | 天蚕土豆           |
| 20 | 上古强身术                           | 我是多余人         |
| 21 | 剑来                                 | 烽火戏诸侯         |
| 22 | 飞剑问道                             | 我吃西红柿         |
| 23 | 一剑独尊                             | 青鸾峰上           |
| 24 | 混沌剑神                             | 心星逍遥           |
| 25 | 斗破苍穹                             | 天蚕土豆           |
| 26 | 盖世                                 | 逆苍天             |
| 27 | 叶尘池瑶小说全文免费阅读             | 叶尘池瑶           |
| 28 | 完美世界                             | 辰东               |
| 29 | 无敌剑域                             | 青鸾峰上           |
| 30 | 永恒圣帝                             | 千寻月             |
+----+--------------------------------------+--------------------+
30 rows in set (0.00 sec)

成功存入了数据

  • 1
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Django是一个用于快速开发Web应用程序的Python Web框架。Scrapy是一个用于爬取网页数据Python框架。ECharts是一个可视化数据展示的JavaScript图表库。 Django可以作为Web应用程序的后端框架,结合Scrapy爬取数据并将其存储到数据库中。然后,我们可以使用ECharts来展示这些数据。 首先,我们需要安装DjangoScrapy和ECharts库。使用Django创建一个新的项目,并在其中创建一个应用程序。接下来,使用Scrapy编写一个爬虫,通过定义爬取网页数据的规则来获取所需数据并存储到数据库中。最后,使用Django的模板系统和ECharts库来生成数据可视化的页面。 在Django中,我们可以创建一个视图函数,用于处理用户请求并从数据库中获取数据。然后,将这些数据传递给前端页面,让ECharts来生成图表展示。在前端页面中,我们可以使用ECharts提供的各种图表类型来展示数据,比如折线图、柱状图、饼图等。 在使用ECharts时,我们可以根据数据的特点选择合适的图表类型,并通过设置各种选项来自定义图表的样式和行为。比如,我们可以设置图表的标题、副标题、图例、坐标轴等信息,以及图表的颜色、标记点和线条等样式。 总之,结合DjangoScrapy和ECharts,我们可以快速开发出一个数据爬取、存储和可视化的Web应用程序。这样,我们可以更直观、更方便地展示和分析网页数据,从而得出有价值的结论。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值