我用Python实现了一个小说网站雏形

发布时间:2026/9/16 3:56:13

我用Python实现了一个小说网站雏形 前言十个python九个爬在大家的印象中好像Python只能做爬虫。然而并非如此Python 也可以做Web开发接下来给大家展示一下如何做一个小说站点。相关软件软件版本功能地址Python3.7.1脚本语言https://www.python.org/Django2.1.3Web框架https://www.djangoproject.com/PyCharm2018.2.4可视化开发工具http://www.jetbrains.com/pycharm/环境搭建说明http://www.runoob.com/python3/python3-install.html爬取数据做一个小说网站内容是必须的首先我们爬取一本小说《星辰变》到数据库。创建一个简单的数据库表 遇到问题没人解答小编创建了一个Python学习交流QQ群857662006 寻找有志同道合的小伙伴互帮互助,群里还有不错的视频学习教程和PDF电子书 CREATE TABLE novel ( id int(11) NOT NULL AUTO_INCREMENT COMMENT 自增主键, title varchar(100) NOT NULL COMMENT 标题, content text NOT NULL COMMENT 内容, PRIMARY KEY (id) ) ENGINEInnoDB AUTO_INCREMENT1 DEFAULT CHARSETutf8安装数据库驱动以及连接池# 数据库驱动 pip install pymysql # 数据库连接池 pip install DBUtils代码实现 遇到问题没人解答小编创建了一个Python学习交流QQ群857662006 寻找有志同道合的小伙伴互帮互助,群里还有不错的视频学习教程和PDF电子书 # -*- coding: UTF-8 -*- # 导入requests库 import requests # 导入文件操作库 import codecs from bs4 import BeautifulSoup import sys import mysql_DBUtils from mysql_DBUtils import MyPymysqlPool import importlib importlib.reload(sys) # 给请求指定一个请求头来模拟chrome浏览器 headers { User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36} server http://www.biquge.cm # 星辰变地址 book http://www.biquge.cm/2/2042/ # 定义DB mysql MyPymysqlPool(dbMysql) # 获取章节内容 def get_contents(chapter): req requests.get(urlchapter) html req.content html_doc str(html, gbk) bf BeautifulSoup(html_doc, html.parser) texts bf.find_all(div, idcontent) # 获取div标签id属性content的内容 \xa0 是不间断空白符 nbsp; content texts[0].text.replace(\xa0 * 4, \n) return content # 写入数据库 def write_db(chapter, content): sql INSERT INTO novel (title, content) VALUES(%(title)s, %(content)s); param {title: chapter, content: content} mysql.insert(sql, param) # 主方法 def main(): res requests.get(book, headersheaders) html res.content html_doc str(html, gbk) # 使用自带的html.parser解析 soup BeautifulSoup(html_doc, html.parser) # 获取所有的章节 a soup.find(div, idlist).find_all(a) print(总章节数: %d % len(a)) for each in a: try: chapter server each.get(href) content get_contents(chapter) chapter each.string write_db(chapter, content) except Exception as e: print(e) mysql.dispose() if __name__ __main__: main()Web实现Django 是一个开放源代码的Web应用框架由 Python 写成。采用了 MVC 的框架模式即模型M视图V和控制器C。它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的即是CMS内容管理系统软件。Django 框架的核心组件有用于创建模型的对象关系映射为最终用户设计的完美管理界面一流的 URL 设计设计者友好的模板语言缓存系统创建项目pip install Django # 创建一个项目 python django-admin.py startproject itstyle # 切换目录 cd itstyle # 创建App python manage.py startapp novel一般一个项目有多个app, 当然通用的app也可以在多个项目中使用然后启动服务# 默认端口是8000 python manage.py runserver如果提示端口被占用可以用其它端口python manage.py runserver 8001项目结构最终代码如下│ manage.py │ ├─novel │ │ settings.py # 基础配置 │ │ urls.py # URL映射 │ │ wsgi.py │ │ __init__.py │ │ │ ├─templates # 相关页面 │ novel.html # 章节 │ novel_list.html # 小说首页 ├─utils │ │ dbMysqlConfig.cnf # 数据库配置参数 │ │ encoder.py # 编码类 │ │ mysql_DBUtils.py # 数据库连接池 └─view │ index.py # 后台业务要点备注RESTful 风格控制器 urls.py 遇到问题没人解答小编创建了一个Python学习交流QQ群857662006 寻找有志同道合的小伙伴互帮互助,群里还有不错的视频学习教程和PDF电子书 from django.conf.urls import url from django.urls import path from view import index urlpatterns [ # 《星辰变》首页List path(, index.main), # new # 章节页面 正则匹配 path(chapter/int:novel_id/, index.chapter), # new ]代码实现 遇到问题没人解答小编创建了一个Python学习交流QQ群857662006 寻找有志同道合的小伙伴互帮互助,群里还有不错的视频学习教程和PDF电子书 from django.http import HttpResponse from django.shortcuts import render from utils.mysql_DBUtils import mysql # 《星辰变》章节列表 def main(request): sql SELECT id,title FROM novel LIMIT 10; result mysql.getAll(sql) # result json.dumps(result, clsMyEncoder, ensure_asciiFalse, indent4) # result json.loads(result) context {novel_list: result} return render(request, novel_list.html, context) # def chapter(request): # id request.GET[id] # sql SELECT content FROM novel where id %(id)s; # param {id: id} # result mysql.getOne(sql, param) # context {novel: result} # return render(request, novel.html, context) 单个章节 此处 novel_id 对应 urls.py 中的 int:novel_id 你可以访问http://localhost:8000/chapter/1/ def chapter(request, novel_id): sql SELECT title,content FROM novel where id %(id)s; param {id: novel_id} result mysql.getOne(sql, param) context {novel: result} return render(request, novel.html, context)列表展示基于后端返回的数据在前台进行展示这里你可以把它想象成Java中的Struts2标签或者JSTL标签当然也有点Vue的意思{% for novel in novel_list %} a href/chapter/{{novel.id}} li{{ novel.title }}/li/a {% endfor %}小结至此一个简单的Web项目雏形已经完成当然还有很多需要优化的地方
延伸阅读

更多相关文章

2026/9/12 2:53:07

Androidstudio第一个程序hello world

Androidstudio第一个程序hello world 新建项目 file-new project 选择empty activity 设置名字,finish 创建之后打开AVD Manger,即Android虚拟设备管理 点击create virtual device 随便选个设备 下载一个Android版本,跟sdk匹配,笔…

2026/9/12 23:38:34

遇到错误

PermissionError: [Errno 13] Permission denied: household_power_consumption.csv这个是由于我在excel打开了household_power_consumption.csv文件, 只需要把桌面的文件关闭后就可以了。

2026/9/16 11:20:42

Cadence SIP Layout实战:系统级封装协同设计方法论

1. 这不是“又一个Cadence教程”:SIP Layout在真实项目中的定位与边界很多人看到“Cadence SIP Layout工具使用教程”这个标题,第一反应是点开找几个按钮截图、复制几行命令——结果跑完Demo发现,自己手里的射频前端模块还是布不通线&#xf…

2026/9/16 11:20:42

EMWIN嵌入式键盘消息机制与矩阵键盘驱动实现

简介:本资源是一份基于emWin图形库实现的嵌入式全功能软键盘组件,面向嵌入式开发工程师及GUI初学者,解决在无操作系统或RTOS环境下为MCU设备快速集成字符输入界面的核心需求。压缩包共2个文件(1个C源码文件、1个头文件&#xff09…

2026/9/16 11:20:42

STM32F103 RS485串口通信实战:自动收发电路、组网与调试要点

简介:面向STM32F103嵌入式开发者的RS485串口通信工程资源,包含完整的串口驱动、RS485方向控制及收发示例代码,适合工业现场远距离、抗干扰通信等应用场景的开发者参考,可用于入门学习或工程复用。压缩包共213个文件,以…

2026/9/16 11:20:42

AI大模型学习指南:从入门到精通的4门核心课程

1. 为什么现在正是转型AI大模型的最佳时机?过去两年,大模型技术以惊人的速度重塑着整个科技行业。从ChatGPT的横空出世到GPT-4的多模态突破,再到Claude、Llama等开源模型的百花齐放,这个领域正在创造着前所未有的职业机会。根据我…

2026/9/16 11:20:42

JP61陀螺仪在ROS自主导航中的系统级集成与调优

1. 项目概述:这不是一块普通陀螺仪,而是一套自主导航系统的“内耳”你搜“自主导航”时,大概率会看到ROS小车、SLAM建图、麦克纳姆轮这些词;点开“gyroscope”相关教程,又满屏是MPU6050接线、I2C地址冲突、滤波参数调不…

2026/9/16 11:15:40

导弹制导系统原理与光学技术应用详解

1. 导弹制导系统概述导弹制导系统是现代精确打击武器的核心组成部分,其本质是通过实时测量导弹与目标的相对运动关系,形成控制指令引导导弹准确命中目标。这套系统融合了控制理论、光学探测、信号处理和计算机技术等多个学科领域。在实战中,制…

2026/9/15 4:54:30

拯救者Y7000黑屏故障排查与维修实战指南

1. 项目概述:一台黑屏的拯救者Y7000,到底卡在哪一步? 联想拯救者Y7000系列笔记本,从2018年第一代搭载i5-8300H开始,到后来的i7-9750H、i7-10750H、i5-11400H,再到2023年款的R7-7840HS,它始终是学…

2026/9/16 0:04:09

PHP源码部署实战:从环境配置到运行情侣游戏全攻略

简介:这是一套面向情侣互动场景的PHP完整源码,集成情侣飞行棋、真心话大冒险、情趣骰子等玩法,并内置完整分销制度,可自定义多种返佣比例,源码完全开源无加密,支持微信无感自动授权登录与第三方授权&#x…

2026/9/15 14:22:53

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/15 21:31:11

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/15 11:42:23

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码