selenium获取aiqiyi信息写入mysql数据库,在django admin后台管理中显示出来

先创建django项目,创建应用index,修改settings中的数据库把原本的sqlite改成mysql的连接方式,注意数据库名,要和获取爱奇艺信息的连接的数据库名相同;然后在应用index的models.py中写入代码,执行迁移数据,在数据库可视化软件中刷新一下,就可以看见一个表名为”应用名_index/models.py中类名”,比如这里应用名为index,类名为Infos,生成的表名就叫index_Infos;跑一下selenium的程序,数据就在index_Infos表中了。接下来创建admin管理员,在执行下runserver,就可以打开网页看到后台数据了。

django-admin startproject MyDjango

cd MyDjango

python manage.py startapp index

settings.py
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'index'
]

数据库

settings
DATABASES = {
    # 第一个数据库,default是默认的数据库不可删除,可留空{}
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'aiqiyi_db',
        'USER': 'root',
        'PASSWORD': '1234',
        'HOST': '127.0.0.1',
        'PORT': '3306',
    }
}

LANGUAGE_CODE = 'zh-hans'

TIME_ZONE = 'Asia/Shanghai'

新建一个数据库aiqiyi_db,然后数据迁移过去

index/models.py
from django.db import models

class Infos(models.Model):
    id = models.AutoField(primary_key=True)
    name = models.CharField(max_length=255)
    performer = models.CharField(max_length=255)
    comments = models.CharField(max_length=1000)
    source = models.CharField(max_length=255)
    # 数字:models.IntegerField()

    def __str__(self):
        # 返回名
        return self.name

python manage.py makemigrations

python manage.py migrate

创建管理员python manage.py createsuperuser

运行python manage.py runserver 8002

打开网页http://127.0.0.1:8002/admin/

selenium获取aiqiyi信息写入mysql数据库,在django admin后台管理中显示出来

上面创建完Django表之后的任一步,都可以运行下面获取爱奇艺的信息。运行完刷新一下admin网页。

models.py

from sqlalchemy import *
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base
from datetime import datetime
database = 'mysql+pymysql://root:1234@localhost/aiqiyi_db?charset=utf8mb4'

Base = declarative_base()
创建数据库连接对象
engine = create_engine(database)
DBSession = sessionmaker(bind=engine)
SQLsession = DBSession()

ORM
class Infos(Base):
    __tablename__ = 'index_infos'    #这个表是Django生成的表index_infos
    id = Column(Integer(), primary_key=True)
    name = Column(String(255))
    performer = Column(String(255))
    comments = Column(String(1000))
    source = Column(String(255))
    created = Column(DateTime, default=datetime.now())
    updated = Column(DateTime, default=datetime.now(), onupdate=datetime.now())

Base.metadata.create_all(engine)

aiqiyi.py 获取的信息分电视剧和电影两种

import time
from selenium import webdriver
from models import *

driver = webdriver.Chrome()

driver.get('https://www.iqiyi.com/ranks1/1/0?vfrm=rank_list&vfrmblk=channel.1&vfrmrst=rank.1')
driver.get('https://www.iqiyi.com/ranks1/1/0?vfrm=rank_list&vfrmblk=channel.1&vfrmrst=rank.1')
time.sleep(2)
movie_list=driver.find_elements_by_class_name('rvi__con')
datalist=[]
for i in movie_list:
    name = i.find_element_by_class_name('rvi__tit1').text
    performer = i.find_element_by_css_selector("span[class='rvi__type__txt']").text
    comments = i.find_element_by_css_selector("p[class='rvi__des2']").text
    print(name,performer,comments)
    time.sleep(1)
    #写入字典
    datalist.append(dict(name=name, performer=performer, comments=comments, source="TV_play"))
datalist.append(dict(name=name, performer=performer, comments=comments, source="film"))
    #遍历字典,数据库不存在该name就写入数据库
    for d in datalist:
        find_data = SQLsession.query(Infos).filter_by(name=d['name']).first()
        if not find_data:
            SQLsession.add(Infos(**d))
    SQLsession.commit()
SQLsession.close()
time.sleep(2)
driver.quit()

selenium获取aiqiyi信息写入mysql数据库,在django admin后台管理中显示出来

selenium获取aiqiyi信息写入mysql数据库,在django admin后台管理中显示出来

显示中文

from django.db import models

ORM
class Infos(models.Model):
    # class Meta:
    #     db_table='spiders_infos'
    id = models.AutoField(primary_key=True)
    name = models.CharField(max_length=255,verbose_name=u'影视剧名')
    performer = models.CharField(max_length=255,verbose_name=u'演员')
    comments = models.CharField(max_length=1000,verbose_name=u'简介')
    source = models.CharField(max_length=255,verbose_name=u'分类')
    # 数字:models.IntegerField()

    class Meta:
        db_table=u'index_infos'
##单复数
        # verbose_name=u'影视'
        verbose_name_plural=u'影视'

    def __str__(self):
        # 返回名
        return self.name

selenium获取aiqiyi信息写入mysql数据库,在django admin后台管理中显示出来

Original: https://blog.csdn.net/weixin_44740756/article/details/123531360
Author: 小炫y
Title: selenium获取aiqiyi信息写入mysql数据库,在django admin后台管理中显示出来

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/734804/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 第4关:Numpy数组的堆叠

    任务描述本关的目标是,改变Numpy数组的形状。相关知识使用Numpy,我们可以方便的更改数组的形状,比如使用reshape()、ravel()、flatten()、transpo…

    Python 2023年8月25日
    036
  • python高阶4(pytest)

    pytest框架 模块:pytest 基本使用方法: 1.函数名要以test开头 2.类名需要以Test开头,类中的方法需要以test开头;类中不能有构造方法 3.使用assert…

    Python 2023年9月14日
    034
  • 基于Qt Designer和PyQt5的桌面软件开发–环境搭建和入门例子

    本文介绍了如何使用技术栈PyCharm+Qt Designer+PyQt5来开发桌面软件,从环境搭建、例子演示到对容易混淆概念的解释。文中用到的全部软件+代码下载链接为:https…

    Python 2023年10月20日
    047
  • drf自定义返回的外键类型:source+序列化器嵌套+model自定义字段

    如果是不经过处理,会返回外键的id值 a. 适用于查询一个字段的 “teacher_name”: “dbj”, b. 查询多个需要进…

    Python 2023年8月6日
    059
  • springcloud3 EurekaClient集群的搭建2

    一 概述 1.1 概述 本文主要是搭建集成eurekaserver的几个客户端,即服务提供者,消费者。架构图如下所示 1.2 使用eureka整合的优点 使用Eureka管理注册的…

    Python 2023年9月26日
    036
  • 【初识Django 2】

    目录 1.视图请求 2.客户端和服务端的简单关系 3.常见易改的报错处理 4.总结 1.视图请求 1.1什么是视图请求视图函数一般用来接收一个 Web请求 HttpRequest,…

    Python 2023年8月5日
    050
  • MySQL数据库面试题总结(2022最新版)

    🐶 程序猿周周⌨️ 短视频小厂BUG攻城狮🤺 如果文章对你有帮助,记得关注、点赞、收藏,一键三连哦,你的支持将成为我最大的动力 本文是《后端面试小册子》系列的第 1️⃣ 篇文章,该…

    Python 2023年11月5日
    032
  • 人工智能导论(4)——不确定性推理(Uncertainty Reasoning)

    文章目录 一、 概述 二、 重点内容 三、 思维导图 四、 重点知识笔记 * 1. 不确定性推理概述 – 1.1 概念 1.2 分类 1.3 基本问题 2. 概率方法 …

    Python 2023年10月7日
    072
  • 用python写搜索引擎_用Python打造属于自己的搜索引擎

    写在前面 昨天接了一个IT行业培训广告,有极小部分读者取关了,虽然体量很小,但我还是有点痛心! 经常熬夜更新公众号,累积收到的打赏连一杯咖啡都买不了。现在发个广告赚个小小的咖啡钱就…

    Python 2023年8月14日
    037
  • UI自动化平台(一)

    前言:最近萌生了做UI自动化平台的想法,以前做UI自动化都是直接脚本化的,也一直觉得UI改动一般都是很频繁,所以慢慢的脚本化的工作都放弃了,但是目前在公司,发现还是有点用的,公司的…

    Python 2023年8月4日
    045
  • JUC包(java.util.concurrent)下的常用子类

    文章目录 前言 一、对象锁juc.locks包 二、原子类 三、四个常用工具类 * 3.1 信号量 Semaphore 3.2 CountDownLatch 总结 前言 博主个人社…

    Python 2023年9月17日
    036
  • 【Python数据分析—NumPy】2.NumPy基础

    2.NumPy基础 NumPy中的ndarray是一个多维数组对象,该对象由两部分组成:1.实际的数据;2.描述这些数据的元数据。大部分的数组操作仅仅修改元数据部分,而不改变底层的…

    Python 2023年8月25日
    060
  • 【邂逅Django】——(三)视图

    🛠️ Part 3:【邂逅Django】—— (三)视图 🛠️ Part 4:【邂逅Django】—— (四)表单和通用视图 🛠️ Part 5:【邂逅Django】—— (五)完…

    Python 2023年11月2日
    037
  • [CSCCTF 2019 Qual]FlaskLight SSTI注入

    进去后页面提示你是flask框架,f12里面告诉你参数名字叫做search并且用GET方法传输,十有八九是模块注入了,用7*7试试服务端模板注入攻击 – 知乎 可以发现…

    Python 2023年8月10日
    041
  • 用Python绘制数学函数图像

    博客文章: https://blog.manchan.top/post/Drawing-mathematical-function-images-with-Python/可在此处找…

    Python 2023年8月23日
    069
  • flask实践–自动化平台搭建

    功能概述 提供出restful接口给前端,可以调用自动化脚本,查询脚本,展示自动化执行报告列表,执行自动化脚本时核心逻辑在于调用远程服务器上的执行脚本,将生成的报告存入数据库。报告…

    Python 2023年8月11日
    053
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球