Python爬虫进阶(1),Django+Selenium+Mysql+SimpleUI,从零开始搭建自己的爬虫后台管理系统

news2024/11/27 12:50:12

在这里插入图片描述
如果爬虫做完的话都会发现每个文件要么保存到csv或者是其他格式的文件中,这样做多少会有些麻烦,所以需要将这些内容保存起来方便自己管理和查看内容。

相对于flask而言Django有着相对成熟的一个后台管理系统配合上其他一些插件就可以做到即插即用的效果而不用自己再去花时间去做其他。
后台系统搭建好是这个样子。
在这里插入图片描述

本篇采用Django作为后台管理系统,将从零开始手把手搭建自己的爬虫后台。
源码已上传有需要可以直接下载

Django爬虫后台管理系统

Python爬虫进阶1

  • 1.Django搭建
  • 2.设计模型
  • 3.后台管理
  • 4.连接mysql数据库
  • 5.用simpleui装饰后台
  • 6.selenium爬虫后存入数据库中
  • 7.Django新增导入导出功能

1.Django搭建

先在cmd中给python安装好Django

pip3 install django

然后点击pychram点击New Project
在这里插入图片描述
然后点击Django
选择默认的python3.7版本即可,appname输入你自己的默认app名称即可创建默认的目录
全部处理好后点击create即可创建Django

在这里插入图片描述
创建好Django项目之后会出现默认的目录
目录结构就是
manage是项目入口指定配置文件路径
init是空文件,被当做包使用
url是配置项目url的文件,指引页面路径
wsgi是web服务器的入口

在这里插入图片描述
之后如果一开始没有创建应用名称那么就需要在pycharm的底部点击terminal终端上创建一个app应用名称
在这里插入图片描述
创建好之后如下
在这里插入图片描述
然后创建好应用后要在setting中检查有无安装成功

在这里插入图片描述
然后点击开始启动服务器

在这里插入图片描述
出现这个页面就代表成功
在这里插入图片描述

在这里插入图片描述

2.设计模型

Django中拥有ORM框架所以我们只要对模型进行设计后既可调用数据库中的数据显示到页面中
所以可以设计一张表结构:
爬虫信息表
表名:Search_sc
内容:content_sc
来源:url_sc
日期:time_sc

from django.db import models
class Search_sc(models.Model):
    content_sc = models.CharField(max_length=300)
    url_sc = models.CharField(max_length=300)
    time_sc = models.CharField(max_length=100)
    def __str__(self):
        return "%d" % self.pk


创建好模型之后进行数据迁移
打开terminal终端
python manage.py makemigrations
执行迁移命令
python manage.py migrate

在这里插入图片描述
在这里插入图片描述
这时候默认的Django数据库是sqlit3,只要在sqlit3数据库中出现当前表格就表示显示成功

在这里插入图片描述

3.后台管理

后台管理可以对数据和用户进行相应的管理,需要创建一个管理员

python manage.py createsuperuser
在这里插入图片描述

然后创建好用户之后用下面地址进行登录

http://127.0.0.1:8000/admin
用你之前创建好的用户名和密码进行登录即可

在这里插入图片描述
然后我们进入管理后台就是如下图所示

在这里插入图片描述
这时候没有看到我们的模型因为还没有注册需要再admin.py中进行注册一下

from django.contrib import admin
from .models import Search_sc
admin.site.register(Search_sc)

在这里插入图片描述
然后再次登录Django后台就可以看到这个页面

在这里插入图片描述

4.连接mysql数据库

上面数据建模已经完成下面就进行连接mysql数据库的操作,先创建一个数据库然后用navicat进行连接
在这里插入图片描述
然后修改settings.py文件
在这里插入图片描述

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',# 默认
        'NAME': 'school',# 连接的数据库
        'HOST': '127.0.0.1', # mysql的ip地址
        'PORT': 3306,  # mysql的端口
        'USER': 'root',  # mysql的用户名
        'PASSWORD': ''  # mysql的密码
    }

}

先安装pymysql,

pip3 install pymysql

由于更换了数据库所以init引擎也要进行相应更换在init中进行相应的修改

在这里插入图片描述


import pymysql
 
 
pymysql.install_as_MySQLdb()

然后再进行数据库迁移

python manage.py makemigrations
python manage.py migrate

迁移成功之后在Navicat中就可以看到mysql中被迁移成功后的数据
迁移
这个就是我一开始创建的模型表
在这里插入图片描述

5.用simpleui装饰后台

由于目前来看我们这些后台管理系统并不好看,所以我们需要加装一些插件把后台系统变得好看一些,所以要添加simpleui插件。
先用pip安装插件


pip3 install django-simpleui

在这里插入图片描述
将simpleui添加到setting中

INSTALLED_APPS = [
	'simpleui',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'test1.apps.Test1Config',

]

# 更改默认语言为中文
LANGUAGE_CODE = 'zh-hans'
#修改时区
TIME_ZONE = 'Asia/Shanghai'
# 隐藏右侧SimpleUI广告链接和使用分析
 SIMPLEUI_HOME_INFO = False 
 SIMPLEUI_ANALYSIS = False 

修改后登录后台管理系统就会发现进行相应的变化
在这里插入图片描述
在这里插入图片描述

然后对后台的标题和名称进行修改在admin.py中进行修改

from django.contrib import admin
from .models import Search_sc
admin.site.register(Search_sc)
admin.site.site_header = '爬虫管理后台' 
admin.site.site_title = '爬虫管理后台'
admin.site.index_title = '爬虫管理后台'

在这里插入图片描述
侧边栏可通过apps.py进行修改

在这里插入图片描述

from django.apps import AppConfig


class Test1Config(AppConfig):
    default_auto_field = 'django.db.models.BigAutoField'
    name = 'test1'
    verbose_name = '爬虫信息管理'

在这里插入图片描述
由于models中显示是英文所以需要将models改变成中文使用verbos_name,对models.py进行修改

from django.db import models
class Search_sc(models.Model):
    content_sc = models.CharField(max_length=300)
    url_sc = models.CharField(max_length=300)
    time_sc = models.CharField(max_length=100)
    class Meta:
        verbose_name = "爬虫详细信息"
        verbose_name_plural = "爬虫详细信息"
    def __str__(self):
        return "%d" % self.pk

在这里插入图片描述

更多simpleui使用可参考这篇文章:
Django实战: 手把手教你配置Django SimpleUI打造美丽后台(多图)
全部修改后的样子比之前好看很多
在这里插入图片描述

6.selenium爬虫后存入数据库中

后台搭建好之后我们就需要使用selenium进行爬虫然后存入mysql数据库中再把数据展示到Django后台管理系统中

目前我的selenium已经配置好如果没有配置好的需要先去配置一下selenium我用的是最新的版本

如果不了解selenium可以去看这一篇文章
selenium用法详解【从入门到实战】【Python爬虫】【4万字】

import time
import pymysql
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from apscheduler.schedulers.blocking import BlockingScheduler
from selenium.webdriver import Chrome, ChromeOptions
conn = pymysql.connect(host='localhost',  # host属性
                       port=3306,  # 端口号
                       user='',  # 用户名
                       password='',  # 此处填登录数据库的密码
                       db='', # 数据库名
                       charset='utf8'
                       )

opt = ChromeOptions()            # 创建Chrome参数对象
opt.headless = True              # 把Chrome设置成可视化无界面模式,windows/Linux 皆可
# Chrome浏览器
driver = webdriver.Chrome()
driver.get("")#新闻网站
def index():
    # 设置等待5秒,避免爬虫时被封禁
    driver.implicitly_wait(5)
    # 找到外框的获取里面所有的li标签
    content = driver.find_element(By.XPATH,'/html/body/div[7]/div[1]/div[2]/ul/li[1]/span/a').text
    url = driver.find_element(By.XPATH,'/html/body/div[7]/div[1]/div[2]/ul/li[1]/span/a').get_attribute('href')
    time_cf=driver.find_element(By.XPATH, '/html/body/div[7]/div[1]/div[2]/ul/li[1]/span/span').text
    cursor = conn.cursor()
            # 插入数据,insert into 表(列名,列名,列名)values(值,值,值)这个值主要就是对应的你获取到的值
    sql = 'insert into test1_search_sc(content_sc,url_sc,time_sc) values(%s,%s,%s);'
            # 对获取到的数据进行排序如果有重复的则进行筛除
    data_list=[content,url,time_cf]

    list2 = sorted(list(set(data_list)), key=data_list.index)

    try:
             # 插入数据
        cursor.execute(sql,list2)
            # 连接数据
        conn.commit()
        print('插入数据成功')
    except Exception as e:
        print('插入数据失败')
        conn.rollback()
        time.sleep(5)
    conn.close()

if __name__ == "__main__":
        index()


然后进行爬虫就会看到数据已经存入数据库当中

在这里插入图片描述
然后进入我们的爬虫后台就会看到相应的数据在这里显示出来
在这里插入图片描述
点击可进行修改的操作,但是目前来看如果后期数据量多还需要一个上传和下载的功能

在这里插入图片描述

7.Django新增导入导出功能

需要安装Django-import-export

pip3 install django-import-export

然后在settings.py中注册一下

INSTALLED_APPS = [
'simpleui',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'test1.apps.Test1Config',
    'import_export',

]
#新增导入导出为TRUE
IMPORT_EXPORT_USE_TRANSACTIONS = True

在这里插入图片描述
然后在admin.py中新增功能,并让表中继承插件

from django.contrib import admin
from .models import Search_sc
from import_export.admin import ImportExportModelAdmin
#将models中数据表字段名注册到admin中
class Search_sc_up(ImportExportModelAdmin):
    list_display = ['content_sc','url_sc','time_sc']

# 在admin注册进去这些表
admin.site.register(Search_sc,Search_sc_up)
admin.site.site_header = '爬虫管理后台'
admin.site.site_title = '爬虫管理后台'
admin.site.index_title = '爬虫管理后台'

在这里插入图片描述
全部做好后重启Django服务器,既可看到新增了导入和导出的功能

在这里插入图片描述
可根据以下这些格式进行导入导出
在这里插入图片描述

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/533507.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

hive安装及配置

hive安装和部署 Hive地址 1.Hive官网地址 http://hive.apache.org/ 2.文档查看地址 https://cwiki.apache.org/confluence/display/Hive/GettingStarted 3.下载地址 http://archive.apache.org/dist/hive/ 4.github地址 http…

全新版本,手把手教你配置c\c++

上一篇图片多,语句乱,内容乱 这一篇采用全新的教程 这次在不删软件的前提下进行 老规矩先把之前看的教程残余删除 如果你有很多插件和设置这边建议先备份 打开c盘,在搜索栏里输入你的用户名 在箭头位置搜索你的用户名,就是你…

通过Python的wordcloud库将单词生成词云(心形形状)

文章目录 前言一、wordcloud库是什么?二、安装wordcloud库三、查看wordcloud库版本四、使用方法1.引入库2.定义图片路径3.定义需要分词的文本4.采用jieba搜索引擎模式分词5.加载心形图片6.创建词云对象7.生成词云8.保存词云图9.词云图效果 总结 前言 大家好&#xf…

第十五章 使用iSCSI服务部署网络存储

文章目录 第十五章 使用iSCSI服务部署网络存储一、iSCSI技术介绍1、硬盘接口类型 二、创建RAID磁盘阵列1、添加四块硬盘2、创建RAID磁盘阵列 三、配置iSCSI服务端1、iSCSI服务的和客户端的操作系统以及IP地址2、安装targetcli3、配置服务端共享资源4、创建iSCSI target名称及配…

B.Conveyor Belts

Codeforces Round 863 (Div. 3) 题目链接 题目大意: 有个矩阵传送带,从其中一个传送带跳到邻近的传送带需要消费一点能量。问从 x 1 , y 1 x_1,y_1 x1​,y1​到 x 2 , y 2 x_2,y_2 x2​,y2​最少要多少能量 个人题解: 我只需要算出该点在哪个…

强化学习笔记-05 蒙特卡罗方法Monte Carlo Method

本文是博主对《Reinforcement Learning- An introduction》的阅读笔记,不涉及内容的翻译,主要为个人的理解和思考。 上一节介绍了通过动态规划法来解决强化Markov decision process MDP环境下的学习问题, 动态规划法假设环境是完全可知&#…

APP测试常见功能测试点汇总,赶紧来记笔记

目录 1、安装和卸载 2、运行 3、注册和登录 4、日历控件 5、权限设置 6、软件更新  7、网络环境 8、兼容性测试:   9、异常测试   1、安装和卸载 安装和卸载是任何一款APP中都属于最基本功能。一旦出错,就属于优先级为紧要的BUG。因此APP…

三十六、链路追踪、配置中心

1、链路追踪 在一次调用链路中,可能设计到多个微服务,如果在线上,某个微服务出现故障,如何快速定位故障所在额微服务呢。 可以使用链路追踪技术 1.1链路追踪介绍 在大型系统的微服务化构建中,一个系统被拆分成了许多微…

Ambari-2.7.7源码编译

0 说明 本文基于Ambari-2.7.7版本进行源码编译。所需的编译资料统一提供如下: 链接:https://pan.baidu.com/s/1F2D7zBGfKihxTBArnOilTw 提取码:8m17 1 前提条件 1.1 下载ambari源码包 wget https://github.com/apache/ambari/releases/t…

【代码调试】《Multi-scale Positive Sample Refinement for Few-shot Object Detection》

论文地址:https://arxiv.org/abs/2007.09384#:~:textMulti-Scale%20Positive%20Sample%20Refinement%20for%20Few-Shot%20Object%20Detection.,previous%20attempts%20that%20exploit%20few-shot%20classification%20techniques%20 代码地址:https://git…

什么是低代码开发?低代码开发可以解决哪些问题?

一、什么是低代码开发? 低代码可以理解为是一种全新的应用开发理念。主要以可视化、参数化的系统配置方式来进行程序应用的开发,因此可以大幅度减少代码编写的工作,从而提高开发效率。 低代码平台则是通过对于业务场景进行高度抽象、提炼&a…

复习之Linux中的名词解释

1.什么是Linux? 严格来讲,Linux这个词本身只表示Linux内核,但实际上人们已经习惯了用Linux来形容整个基于Linux内核,并且使用GNU 工程各种工具和数据库的操作系统。因此LinuxLinux内核GNU软件 2.什么是Shell? Shell是系统的用户界面&…

Redis学习---01(Redis安装超详细)

一、Nosql非关系型数据库 (1)小tips: 数据库的发展: 单机时代memcached 缓存Mysql读写分离(一部分数据库只写,一些数据库只用来读)分库分表 水平拆分Mysql集群 (2) Nosql的特点: 对于数据量大,变化比较…

如何安装Tomcat并在IDEA中配置

下载 1.如果你使用的是Spring框架的6版本请下载Tomcat10版本 Apache Tomcat - Apache Tomcat 10 Software Downloads 2.如果你使用的是Spring框架的6以下请下载Tomcat9版本或以下都行,如果不知道你使用的是什么推荐下载Tomcat9版本使用 Apache Tomcat - Apache …

第三方直播云平台(保利威和阿里云)直播集成demo

第三方直播云平台&#xff08;保利威和阿里云&#xff09;直播集成文档整理。 保利威&#xff1a; 保利威帮助中心 js demo <div id"player"></div> <script src"//player.polyv.net/resp/live-h5-player/latest/liveplayer.min.js">…

通俗易懂的入门正则表达式

背景 其实在使用正则表达式之前&#xff0c;我们在查找文件之类的&#xff0c;已经用过类似正则表达式的符号&#xff0c;例如&#xff1a; // 匹配多个任意字符 ls *.js // 只匹配一个任意字符 ls ?.js这种方法很有用但也是有限的&#xff0c;而正则表达式则更加的完整、强…

Linux - 第14节 - 网络编程套接字(三)

1.Linux远程控制的网络程序 1.1.Linux远程控制的网络程序&#xff08;普通版&#xff09; 创建serverTcp.cc文件&#xff0c;写入下图一所示的代码&#xff0c;创建clientTcp.cc文件&#xff0c;写入下图二所示的代码&#xff0c;创建log.hpp文件&#xff0c;写入下图三所示的…

Dart整理笔记 | Dart参考手册

Dart SDK 安装 如果是使用Flutter 开发&#xff0c;Flutter SDK自带&#xff0c;无需单独安装Dart SDK。 如果需要独立调试运行Dart代码&#xff0c;需要独立安装Dart SDK。 官方文档&#xff1a;https://dart.dev/get-dart windows(推荐): http://www.gekorm.com/dart-wind…

秒级数据写入,毫秒查询响应,天眼查基于 Apache Doris 构建统一实时数仓

导读&#xff1a; 随着天眼查近年来对产品的持续深耕和迭代&#xff0c;用户数量也在不断攀升&#xff0c;业务的突破更加依赖于数据赋能&#xff0c;精细化的用户/客户运营也成为提升体验、促进消费的重要动力。在这样的背景下正式引入 Apache Doris 对数仓架构进行升级改造&a…

浅聊一下Linuxptp

浅聊一下Linuxptp 文章目录 浅聊一下Linuxptp1.什么是Linuxptp2.安装Linuxptp3.源码解析一下1.8个带main函数的源文件1.hwstamp_ctl.c2.nsm.c3.phc2sys.84.phc_ctl.85.pmc.86.ptp4l.c7.timemaster.c8.ts2phc.c 2.clock.c文件 4.自己实践 1.什么是Linuxptp LinuxPTP&#xff08…