最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

利用Python如何實(shí)現(xiàn)一個(gè)小說(shuō)網(wǎng)站雛形

 更新時(shí)間:2018年11月23日 15:08:35   作者:小柒2012  
這篇文章主要給大家介紹了關(guān)于利用Python如何實(shí)現(xiàn)一個(gè)小說(shuō)網(wǎng)站雛形的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用python具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

前言

最近做了一個(gè)爬取妹子套圖的小功能,小伙伴們似乎很有興趣,為了還特意組建了一個(gè)Python興趣學(xué)習(xí)小組,來(lái)一起學(xué)習(xí)。十個(gè)python九個(gè)爬,在大家的印象中好像Python只能做爬蟲。然而并非如此,Python 也可以做Web開發(fā),接下來(lái)給大家展示一下如何做一個(gè)小說(shuō)站點(diǎn)。

下面話不多說(shuō)了,來(lái)一起看看詳細(xì)的介紹吧

相關(guān)軟件

軟件 版本 功能 地址
Python 3.7.1 腳本語(yǔ)言 https://www.python.org/
Django 2.1.3 Web框架 https://www.djangoproject.com/
PyCharm 2018.2.4 可視化開發(fā)工具 http://www.jetbrains.com/pycharm/

環(huán)境搭建說(shuō)明:

linux下安裝python3環(huán)境:http://www.fzitv.net/article/109580.htm

Window 64位下python3.6.2環(huán)境搭建圖文教程:http://www.fzitv.net/article/147707.htm

爬取數(shù)據(jù)

做一個(gè)小說(shuō)網(wǎng)站,內(nèi)容是必須的,首先我們爬取一本小說(shuō)《星辰變》到數(shù)據(jù)庫(kù)。

創(chuàng)建一個(gè)簡(jiǎn)單的數(shù)據(jù)庫(kù)表:

CREATE TABLE `novel` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增主鍵',
`title` varchar(100) NOT NULL COMMENT '標(biāo)題',
`content` text NOT NULL COMMENT '內(nèi)容',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8

安裝數(shù)據(jù)庫(kù)驅(qū)動(dòng)以及連接池:

# 數(shù)據(jù)庫(kù)驅(qū)動(dòng)
pip install pymysql
# 數(shù)據(jù)庫(kù)連接池
pip install DBUtils

代碼實(shí)現(xiàn):

# -*- coding: UTF-8 -*-
# 導(dǎo)入requests庫(kù)
import requests
# 導(dǎo)入文件操作庫(kù)

import codecs
from bs4 import BeautifulSoup
import sys
import mysql_DBUtils
from mysql_DBUtils import MyPymysqlPool
import importlib
importlib.reload(sys)


# 給請(qǐng)求指定一個(gè)請(qǐng)求頭來(lái)模擬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")


# 獲取章節(jié)內(nèi)容
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標(biāo)簽id屬性content的內(nèi)容 \xa0 是不間斷空白符  
content = texts[0].text.replace('\xa0' * 4, '\n')
return content


# 寫入數(shù)據(jù)庫(kù)
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')
# 獲取所有的章節(jié)
a = soup.find('div', id='list').find_all('a')
print('總章節(jié)數(shù): %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

Web實(shí)現(xiàn)

Django 是一個(gè)開放源代碼的Web應(yīng)用框架,由 Python 寫成。采用了 MVC 的框架模式,即模型M,視圖V和控制器C。它最初是被開發(fā)來(lái)用于管理勞倫斯出版集團(tuán)旗下的一些以新聞內(nèi)容為主的網(wǎng)站的,即是CMS(內(nèi)容管理系統(tǒng))軟件。

Django 框架的核心組件有:

  • 用于創(chuàng)建模型的對(duì)象關(guān)系映射
  • 為最終用戶設(shè)計(jì)的完美管理界面
  • 一流的 URL 設(shè)計(jì)
  • 設(shè)計(jì)者友好的模板語(yǔ)言
  • 緩存系統(tǒng)

創(chuàng)建項(xiàng)目

pip install Django
# 創(chuàng)建一個(gè)項(xiàng)目
python django-admin.py startproject itstyle
# 切換目錄
cd itstyle
# 創(chuàng)建App
python manage.py startapp novel

一般一個(gè)項(xiàng)目有多個(gè)app, 當(dāng)然通用的app也可以在多個(gè)項(xiàng)目中使用,然后啟動(dòng)服務(wù):

# 默認(rèn)端口是8000
python manage.py runserver

如果提示端口被占用,可以用其它端口:

python manage.py runserver 8001

項(xiàng)目結(jié)構(gòu)

最終代碼,如下:

│ manage.py

├─novel

│ │ settings.py # 基礎(chǔ)配置
│ │ urls.py # URL映射
│ │ wsgi.py
│ │ __init__.py
│ │

├─templates # 相關(guān)頁(yè)面
│ novel.html # 章節(jié)
│ novel_list.html # 小說(shuō)首頁(yè)
├─utils
│ │ dbMysqlConfig.cnf # 數(shù)據(jù)庫(kù)配置參數(shù)
│ │ encoder.py # 編碼類
│ │ mysql_DBUtils.py # 數(shù)據(jù)庫(kù)連接池
└─view
│ index.py # 后臺(tái)業(yè)務(wù)

要點(diǎn)備注

RESTful 風(fēng)格

控制器 urls.py

from django.conf.urls import url
from django.urls import path
from view import index

urlpatterns = [
# 《星辰變》首頁(yè)List
path('', index.main), # new
# 章節(jié)頁(yè)面 正則匹配 
path('chapter/<int:novel_id>/', index.chapter), # new
]

代碼實(shí)現(xiàn):

from django.http import HttpResponse
from django.shortcuts import render
from utils.mysql_DBUtils import mysql


# 《星辰變》章節(jié)列表
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)

'''
單個(gè)章節(jié)
此處 novel_id 對(duì)應(yīng) urls.py 中的 <int:novel_id>
你可以訪問(wèn):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)

列表展示

基于后端返回的數(shù)據(jù),在前臺(tái)進(jìn)行展示,這里你可以把它想象成Java中的Struts2標(biāo)簽或者JSTL標(biāo)簽,當(dāng)然也有點(diǎn)Vue的意思:

{% for novel in novel_list %}
<a href="/chapter/{{novel.id}} " rel="external nofollow" ><li>{{ novel.title }}</li></a>
{% endfor %}

小結(jié)

至此,一個(gè)簡(jiǎn)單的Web項(xiàng)目雛形已經(jīng)完成,當(dāng)然還有很多需要優(yōu)化的地方,小伙伴們可以關(guān)注從零學(xué) Python,持續(xù)更新。

源碼:https://gitee.com/52itstyle/Python/tree/master/Day06/novel (本地下載

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

  • 詳解Python 合并字典

    詳解Python 合并字典

    這篇文章主要為大家介紹了Python的合并字典,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2021-12-12
  • Python合并列表、字典、字符串、CSV文件、多文件技巧

    Python合并列表、字典、字符串、CSV文件、多文件技巧

    在 Python 中,有多種方法可以實(shí)現(xiàn)數(shù)據(jù)合并,無(wú)論是合并列表、合并字典、合并字符串、合并CSV文件還是合并多個(gè)文件夾中的文件,都可以使用簡(jiǎn)單而強(qiáng)大的Python技巧來(lái)實(shí)現(xiàn),通過(guò)合并數(shù)據(jù),可以更方便地進(jìn)行數(shù)據(jù)處理和分析
    2024-03-03
  • 帶你一文搞懂Python文件的讀寫操作

    帶你一文搞懂Python文件的讀寫操作

    讀寫文件是最常見的IO操作,Python內(nèi)置了讀寫文件的函數(shù),下面這篇文章主要給大家介紹了關(guān)于Python文件讀寫操作的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-05-05
  • Python+OpenCV圖像處理——圖像二值化的實(shí)現(xiàn)

    Python+OpenCV圖像處理——圖像二值化的實(shí)現(xiàn)

    這篇文章主要介紹了Python+OpenCV實(shí)現(xiàn)圖像二值化,幫助大家更好的利用python處理圖片,感興趣的朋友可以了解下
    2020-10-10
  • 最新版 Windows10上安裝Python 3.8.5的步驟詳解

    最新版 Windows10上安裝Python 3.8.5的步驟詳解

    這篇文章主要介紹了最新版 Windows10上安裝Python 3.8.5的步驟詳解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-11-11
  • python使用fileinput模塊實(shí)現(xiàn)逐行讀取文件的方法

    python使用fileinput模塊實(shí)現(xiàn)逐行讀取文件的方法

    這篇文章主要介紹了python使用fileinput模塊實(shí)現(xiàn)逐行讀取文件的方法,涉及Python中fileinput模塊操作文件的相關(guān)技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2015-04-04
  • python實(shí)現(xiàn)在cmd窗口顯示彩色文字

    python實(shí)現(xiàn)在cmd窗口顯示彩色文字

    今天小編就為大家分享一篇python實(shí)現(xiàn)在cmd窗口顯示彩色文字,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-06-06
  • Python如何實(shí)現(xiàn) HTTP echo 服務(wù)器

    Python如何實(shí)現(xiàn) HTTP echo 服務(wù)器

    本文介紹了如何使用Python實(shí)現(xiàn)一個(gè)簡(jiǎn)單的HTTPecho服務(wù)器,該服務(wù)器支持GET和POST請(qǐng)求,并返回JSON格式的響應(yīng),GET請(qǐng)求返回請(qǐng)求路徑、方法、頭和查詢字符串,POST請(qǐng)求還返回請(qǐng)求體內(nèi)容,服務(wù)器的使用方法和測(cè)試示例也一并提供,感興趣的朋友跟隨小編一起看看吧
    2025-01-01
  • python 項(xiàng)目目錄結(jié)構(gòu)設(shè)置

    python 項(xiàng)目目錄結(jié)構(gòu)設(shè)置

    JAVA有標(biāo)準(zhǔn)的maven目錄結(jié)構(gòu),golang也有建議的目錄結(jié)構(gòu),那么我想python是不是也有一個(gè)比較好的目錄結(jié)構(gòu)組織方式呢
    2020-02-02
  • 淺析python中特殊文件和特殊函數(shù)

    淺析python中特殊文件和特殊函數(shù)

    這篇文章主要介紹了python中特殊文件和特殊函數(shù)的相關(guān)知識(shí),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-02-02

最新評(píng)論

将乐县| 克拉玛依市| 上栗县| 林西县| 彭州市| 青铜峡市| 泊头市| 大冶市| 兴仁县| 邻水| 太仆寺旗| 介休市| 江城| 濮阳县| 宣威市| 开封县| 虎林市| 珲春市| 河北省| 南华县| 大丰市| 大同市| 沁阳市| 汉沽区| 桦南县| 康马县| 兴隆县| 肥城市| 清苑县| 江永县| 吴江市| 莒南县| 曲水县| 家居| 于都县| 城市| 桦南县| 绩溪县| 苍山县| 光山县| 桑植县|