当前位置: 首页 > news >正文

宜昌平台网站建设/恩施seo整站优化哪家好

宜昌平台网站建设,恩施seo整站优化哪家好,女装网站建设,bbc实验是哪个网站做的前言 前段时间做了一个爬取妹子套图的小功能,小伙伴们似乎很有兴趣,为了还特意组建了一个Python兴趣学习小组,来一起学习。十个python九个爬,在大家的印象中好像Python只能做爬虫。然而并非如此,Python 也可以做Web开发…

前言

前段时间做了一个爬取妹子套图的小功能,小伙伴们似乎很有兴趣,为了还特意组建了一个Python兴趣学习小组,来一起学习。十个python九个爬,在大家的印象中好像Python只能做爬虫。然而并非如此,Python 也可以做Web开发,接下来给大家展示一下如何做一个小说站点。

相关软件

爬取数据

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

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

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 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(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, '\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, 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()

更多代码详见:

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

from django.conf.urls import url

from django.urls import path

from view import index

urlpatterns = [

# 《星辰变》首页List

path('', index.main), # new

# 章节页面 正则匹配

path('chapter//', index.chapter), # new

]

代码实现:

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, cls=MyEncoder, ensure_ascii=False, indent=4)

# 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 中的

你可以访问: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 %}

{{ novel.title }}

{% endfor %}

http://www.lbrq.cn/news/1604539.html

相关文章:

  • 手提包 东莞网站建设/视频互联网推广选择隐迅推
  • wap网站在线生成/谷歌官网注册入口
  • 镇海网站建设/免费的网站
  • 孝感哪家做网站的公司好/企业营销策划实训报告
  • 网站建设公司的市场定位/北京网站排名推广
  • 淘宝网络营销推广方式/长沙seo男团
  • 大连建站费用/邢台网站网页设计
  • 做网站 用什么语言好/seo网站分析
  • 只做一种产品的网站/自己做网站的流程
  • 教育网站如何做seo/台州网站制作维护
  • 怎么自己创建一个平台/网络优化工程师有前途吗
  • 中国建设招标网站首页/飞猪关键词排名优化
  • 生物科技网站建设 中企动力北京/超级seo外链
  • 选择赣州网站建设/百度推广如何代理加盟
  • wap网站程序/体球网足球世界杯
  • 做网站后台的时候要注意什么/推广网站源码
  • 网站可以在手机上做吗/广州seo网站开发
  • app开发的网站/app软件推广平台
  • 在国内做电商网站需要什么审核/宜兴百度推广
  • 网站设计的背景/重庆seo快速优化
  • 新兴网站建设/北京it培训机构哪家好
  • 承接设计网站建设/搜索引擎营销简称seo
  • 手机功能网站案例/域名注册要多少钱
  • php网站安装图解/青岛seo整站优化哪家专业
  • wordpress utf8 gbk/深圳网站seo外包公司哪家好
  • 网站右键屏蔽/西安百度推广代理商
  • web网站开发毕业论文/郑州关键词seo
  • 龙华建网站/谷歌商店下载官网
  • 常州微信网站建设/什么是百度搜索推广
  • 自贡北京网站建设/打开一个网站
  • PPT自动化 python-pptx - 9: 图表(chart)
  • web前端React和Vue框架与库安全实践
  • 图像加密学习日志————论文学习DAY4
  • Node.js 路由与中间件
  • MyBatisPlus之核心注解与配置
  • LLM Prompt与开源模型资源(3)如何写一个好的 Prompt