新闻资讯

新闻资讯
首页 > 新闻资讯 > 正文内容

外包做网站(南宁做网站的外包公司)

时间:2023-11-08 信途科技新闻资讯

环境搭建说明:

http://xintu.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://xintu.biquge.cm'# 星辰变地址book = 'http://xintu.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, '\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()

更多代码详见:

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

私信小编007即可获取惊喜大礼包哦!

创建项目

# 安装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/<int:novel_id>/', 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 中的 <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) 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 %} <a href="/chapter/{{novel.id}} "><li>{{ novel.title }}</li></a>{% endfor %}

小结

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

扫描二维码推送至手机访问。

版权声明:本文由信途科技转载于网络,如有侵权联系站长删除。

转载请注明出处https://www.xintukeji.cn/xintu/15792.html

标签: 外包做网站

相关文章

抖音直播引流推广方法作品分享(抖音直播带货如何引流与推广)

随着全民直播时代的到来,越来越多的人开始加入到抖音直播中来。他们有的人对直播有着深入了解的,有的是经过专业培训的,但更多的还是对直播一无所知的。因此,很多新人主播在刚开始直播时,都会面临抖音直播没人气...

浐灞艾美网络营销,西安五星级酒店排名

北京网络营销每个企业必不可少张金炜北京网络营销培训我们都知道,网络营销的工作中,软文新闻稿等文案策划的工作只是其中的一小部分,如何将这些内容在网络上传播。履行股东大会相关的通知和公告义务,做好股东大会...

推广引流软件怎么用(推广引流软件专员)

大家好,我是古圣,今天给大家分享一个简单粗暴的万能精准引流技巧,如果你还不知道怎么精准引流推广,一定要学一下这个方法。此方法简单粗暴,学会就可以直接上手,操作后也可以立马见效。引流其实很简单,我们要做...

免费做网站建设(郑州做优化网站建设)

如何创建网站,怎么制作自己的网站是每个企业关心的问题,不管你是自己做,还是委托给专业做网站的公司,都离不开一个完整的网站建设流程,网站建设之初需要做是确认网站设计风格、网站首页设计、后台程序开发、程序...

哪个景区运用了网络营销的简单介绍

特别是微博微信等新颖的营销模式可为其它旅游景区借鉴 盘点2012年武陵源区网络营销案例时,笔者发现,微博微信等新媒体运用不仅超前娴。第四种是景区充分运用线上口碑营销 景区升级线上实践的第四种方式是线...

乐山网络营销搜索推广,乐山最好的网络营销公司

乐山网站建设,乐山做网站,乐山网站建设维护公司,乐山网络科技有限公司,乐山网站优化,乐山企业网站设计制作公司,乐山营销。网络推广传媒广告营销策划等多元化的互联网企业,签约本土各行业商家上千家,用户群覆...

现在,非常期待与您的又一次邂逅

我们努力让每一次邂逅总能超越期待

  • 效果付费
    效果付费

    先出效果再付费

  • 极速交付
    极速交付

    响应速度快,有效节省客户时间

  • 1对1服务
    1对1服务

    专属客服对接咨询

  • 持续更新
    持续更新

    不断升级维护,更好服务用户