发布时间:2026/7/28 17:46: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/7/28 17:46:13

Androidstudio第一个程序hello world

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

2026/7/28 17:46:13

遇到错误

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

2026/7/28 18:46:41

Windows网络测速终极指南:iperf3一键安装与完整使用教程

Windows网络测速终极指南:iperf3一键安装与完整使用教程 【免费下载链接】iperf3-win-builds iperf3 binaries for Windows. Benchmark your network limits. 项目地址: https://gitcode.com/gh_mirrors/ip/iperf3-win-builds 还在为网络速度不稳定而烦恼吗&…

2026/7/28 18:46:41

NanaZip:Windows平台最佳免费压缩工具完整指南

NanaZip:Windows平台最佳免费压缩工具完整指南 【免费下载链接】NanaZip The 7-Zip derivative intended for the modern Windows experience 项目地址: https://gitcode.com/gh_mirrors/na/NanaZip 你是否曾经为Windows上臃肿的压缩软件感到烦恼&#xff1f…

2026/7/28 18:46:41

Python 实现POST上行压缩上传可用HTTP库汇总

先重申核心原理:上行请求体压缩不是HTTP库自带功能,本质是你自己把body gzip压缩,带上 Content-Encoding: gzip 请求头,将压缩二进制作为请求体发送。 所有支持自定义请求body、自定义请求头的HTTP客户端都能实现,区别…

2026/7/28 18:46:41

C++移动语义:从右值引用到高效资源管理

1. 项目概述&#xff1a;为什么我们需要“移动”&#xff1f; 如果你写过一段时间的C&#xff0c;尤其是处理过包含动态内存、文件句柄或者网络连接这类“资源”的类&#xff0c;那你一定对深拷贝带来的性能开销深有感触。想象一下&#xff0c;你有一个 std::vector<std::s…

2026/7/28 18:41:40

PAT甲级 1054 The Dominant Color 找出最多的像素颜色 map打点

Solution&#xff1a; 题目要求&#xff1a;给出一个m x n 的矩阵&#xff0c;每个元素的值代表一种像素颜色&#xff0c;求像素颜色最多的点的颜色。map直接打点就行了。 代码如下&#xff1a; //找出最多的像素颜色、map打点 #include<iostream> #include<math.h>…

2026/7/28 13:41:25

PDF合并与动态水印的工程化方案:2026国内免费工具实测对比

一、背景与测试方案 在实际项目交付中&#xff0c;PDF文件合并与版权保护水印的叠加是一个高频但容易被低估的技术需求。典型的处理链路涉及&#xff1a;多源PDF的文件流合并、页面级水印渲染&#xff08;含透明度混合与图层叠加&#xff09;、输出文件体积控制。看似简单的操作…

2026/7/28 0:03:34

学术论文研究创新点梳理与核心价值提炼指南

本科毕业论文是大学四年最大的坎。开题报告憋一周写不出三页&#xff0c;找文献翻遍十几个网站还是缺关键资料&#xff0c;写正文卡壳半天憋不出一句话&#xff0c;降重改到凌晨三点结果逻辑全乱&#xff0c;答辩前一天PPT还没做完。别慌&#xff0c;亲测这四个工具能让你少熬半…

2026/7/28 0:03:34

开发商售楼处数字化升级怎么做?

房企的数字化转型投入正在快速增长&#xff0c;据行业数据显示&#xff0c;2025年房企数字化投入规模已突破800亿元&#xff0c;年复合增长率达35%。售楼处的数字化升级不是单一环节的改造&#xff0c;而是从“获客-展示-成交-服务”全链路的系统升级。数字化升级四步法第一步&…

2026/7/28 0:03:34

模型不再值钱之后,AI 编程工具在争什么

2026 年 7 月&#xff0c;AI 编程工具赛道发生了一个标志性转折&#xff1a;模型本身不再值钱了。当 Kimi K3 开源模型在编程基准上击败 GPT 和 Claude&#xff0c;当 GitHub Copilot 第一次把开源模型纳入选择器&#xff0c;当 OpenAI 把 Codex 并入 ChatGPT 做成三合一超级应…

2026/7/28 4:38:09

3个高效策略:快速掌握Axure中文界面配置

3个高效策略&#xff1a;快速掌握Axure中文界面配置 【免费下载链接】axure-cn Chinese language file for Axure RP. Axure RP 简体中文语言包。支持 Axure 11、10、9。不定期更新。 项目地址: https://gitcode.com/gh_mirrors/ax/axure-cn 还在为Axure RP的英文界面感…