flask+vue整合csdn内容抓取展示

摘要:本文利用数据库mysql、后端flask、前端vue设计了优快云首页数据抓取系统,实现了普通用户抓取优快云首页帖子数据,管理员用户管理普通用户抓取数据权限的机制。

总体效果,首页:

管理员用户登录:

普通用户登录:

管理员取消权限后

主要实现以下几点:

1.前后端分离,前端使用vue设计页面,后端使用python语言的flask框架建立接口。

2.设计爬虫,使用selenium操纵edge浏览器驱动抓取优快云首页帖子数据的作者、点赞数、踩数、标题、链接,满足robots规则。(优快云:我发布的贴子抓取我自己*^____^*)。

3.用户验证,管理员统一管理用户的抓取权限。

4.数据安全验证,采用基本的MD5签名验证。

5.个性化操作日志和参数单独文件配置(小型项目无所谓,中大型项目很重要)。

主要用到的语言或工具:python、js(vue.js)、flask、vue、mysql、selenium。

1.数据库mysql

本地创建数据库:

create database if not exists csdn default charset utf8 collate utf8_general_ci;

进入数据库

use csdn;

创建表(这里用了小写的数据库关键词):

 create table users (id int auto_increment primary key,#主键
    name varchar(32) not null,#名字
    phone varchar(16) not null,#手机号
    userType enum("root","user") not null,#用户类别,管理员还是普通用户
    GetLabel enum("0","1") not null,#是否有权限,1表示有,0表示没有
    created_at timestamp null default current_timestamp,#账户创建时间
    password varchar(64) not null);密码

这里注册了几个用户。

2.后端flask

        后端提供的接口:登录接口、注册普通用户接口、爬虫接口、获取用户信息列表、取消/增加普通用户抓取权限的接口。接口文件app.py的代码为

import time
from flask import Flask, request
import logging
import pymysql,config
import va
from selenium import webdriver
from selenium.webdriver.edge.service import Service
from datetime import datetime
from concurrent.futures import ThreadPoolExecutor #多线程工具
from flask_cors import CORS  #跳过跨域验证的工具

app = Flask(__name__)
CORS(app)
# 配置日志
logging.basicConfig(filename='app.log',             # 指定日志文件名
                    level=logging.DEBUG,            # 设置日志级别
                    format='%(asctime)s - %(levelname)s - %(message)s')     #设置时间格式
def sql_execute(sql):#sql执行函数
    con = pymysql.connect(host=config.host,
                          user=config.user,
                          passwd=config.password,
                          db=config.db,  # 数据库名
                          charset=config.charset)  # 字符集
    with con.cursor() as cursor:
        cursor.execute(sql)  # 执行查询sql
        result = cursor.fetchall()
        con.commit()
        con.close()  # 关闭连接
    return result

@app.route('/login', methods=['POST'])
def login():#登录接口
    try:
        api_data = request.get_json()
        if not va.Verify.verify_api_data(api_data=api_data):#验证数据的完整性
            app.logger.error(f"登录信息{api_data}数据安全验证失败")
            return {
                "msg":"数据安全验证失败",
                "data":""
            }
        loginName = api_data['username']
        loginPwd = api_data['password']
        querySql = f"select * from users where phone='{loginName}'"
        query_result = sql_execute(sql=querySql)
        if len(query_result) == 0:#如果账号查不到
            app.logger.error(f"错误的登录账号:{loginName}")
            return {
                "msg": "账号不存在!"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值