自己开发了一款小说网站!师傅说这个项目做外包可以拿3W?

自己开发了一款小说网站!师傅说这个项目做外包可以拿3W?,第1张

概述  环境搭建说明:http://www.runoob.com/python3/python3-install.html爬取数据做一个小说网站,内容是必须的,首先我们爬取一本小说《星辰变》到数据库。

环境搭建说明:

http://www.runoob.com/python3/python3-install.HTML

爬取数据

做一个小说网站,内容是必须的,首先我们爬取一本小说《星辰变》到数据库。

创建一个简单的数据库表:

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`) ) ENGINE=InnoDB auto_INCREMENT=1 DEFAulT CHARSET=utf8

安装数据库驱动以及连接池:

# 数据库驱动pip install pyMysqL# 数据库连接池pip install dbutils

代码实现:

# -*- Coding: UTF-8 -*-# 导入requests库import requests# 导入文件 *** 作库import codecsfrom bs4 import BeautifulSoupimport sysimport MysqL_dbutilsfrom MysqL_dbutils import MyPyMysqLPoolimport importlibimportlib.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/'# 定义DBMysqL = MyPyMysqLPool("dbMysqL")# 获取章节内容def get_contents(chapter): req = requests.get(url=chapter) HTML = req.content HTML_doc = str(HTML,'gbk') bf = BeautifulSoup(HTML_doc,'HTML.parser') texts = bf.find_all('div',ID="content") # 获取div标签ID属性content的内容 \xa0 是不间断空白符  content = texts[0].text.replace('\xa0' * 4,'') 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,headers=headers) HTML = res.content HTML_doc = str(HTML,'gbk') # 使用自带的HTML.parser解析 soup = BeautifulSoup(HTML_doc,'HTML.parser') # 获取所有的章节 a = soup.find('div',ID='List').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()

更多代码详见:

https://gitee.com/52itstyle/Python/tree/master/Day04

进群:548377875  即可获取惊喜大礼包哦!

创建项目

# 安装Web框架 pip install Django# 创建一个项目python django-admin.py startproject itstyle# 切换目录cd itstyle# 创建Apppython manage.py startapp novel

一般一个项目有多个app,当然通用的app也可以在多个项目中使用,然后启动服务:

# 默认端口是8000python 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

from django.conf.urls import urlfrom django.urls import pathfrom vIEw import indexurlpatterns = [ # 《星辰变》首页List path('',index.main),# new # 章节页面 正则匹配  path('chapter//',index.chapter),# new]

代码实现

from django.http import httpResponsefrom django.shortcuts import renderimport utils.MysqL_dbutilsfrom utils.MysqL_dbutils import MyPyMysqLPoolfrom utils.encoder import MyEncoderimport JsonMysqL = MyPyMysqLPool("dbMysqL")# 《星辰变》章节列表def main(request): # 这里读取10条,待优化分页 sql = "SELECT ID,Title FROM novel liMIT 10;" result = MysqL.getAll(sql) # 中文转码 result = Json.dumps(result,cls=MyEncoder,ensure_ascii=False,indent=4) result = Json.loads(result) context = {'novel_List': result} return render(request,'novel_List.HTML',context)'''单个章节访问此处 novel_ID 对应 urls.py 中的 你可以访问: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) result['Title'] = result['Title'].decode('utf-8') result['content'] = result['content'].decode('utf-8') context = {'novel': result} return render(request,'novel.HTML',context)

列表展示

基于后端返回的数据,在前台进行展示,这里你可以把它想象成Java中的Struts2标签或者JsTL标签,当然也有点Vue的意思:

{% for novel in novel_List %} {{ novel.title }}{% endfor %}

小结

至此,一个简单的Web项目雏形已经完成,当然还有很多需要优化的地方,做成了项目,应该就能有3w快到手了!路还长,还需努力!

总结

以上是内存溢出为你收集整理的自己开发了一款小说网站!师傅说这个项目做外包可以拿3W?全部内容,希望文章能够帮你解决自己开发了一款小说网站!师傅说这个项目做外包可以拿3W?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1208505.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存