python下载小说
时间:2022-05-31
本文章向大家介绍python下载小说,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
采用了requests库,代码修改一下文件存放的文章,以及添加一下小说目录就可以使用. 代码百度云
# -*- coding: utf-8 -*-
"""
Created on Fri May 11 08:39:52 2018
@author: dflx
"""
import requests
import re
import time
import os
import requests.packages.urllib3.util.ssl_
requests.packages.urllib3.util.ssl_.DEFAULT_CIPHERS = 'ALL'
import urllib3.contrib.pyopenssl
urllib3.contrib.pyopenssl.inject_into_urllib3()
def get_html(url):
header ={
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.90 Safari/537.36 2345Explorer/9.3.2.17331',
}
# 使用request库传参时不需要使用urlencode函数去编码成byte类型数据,库自动去编码。get方法参数是params=,post方法是data=
response = requests.get(url,headers = header,verify=False)
response.encoding=response.apparent_encoding
html=response.text
return html
def novel_information(html,reg):
novel_text=re.findall(reg,html)
#print(novel_text)
return novel_text
def get_regular_text(text):
global count
print("------get rgulax text----")
#print(type(text[0]),'length=',len(text))
new_word=text
if ' ' in text[0]:
new_word=re.sub(r' ',' ',text[0])
print(type(new_word),'length=',len(new_word))
if '<br />' in new_word:
new_word=re.sub(r'<br />','n',new_word)
count+=len(new_word)
return new_word
def get_onechapter(url):
html = get_html(url)
re1 = r'<h1>(.*?)</h1>'
re2 = r'<div id="content">(.*?)</div>'
novel_chapter_name = novel_information(html, re1)
text = novel_information(html, re2)
print("下载:------",count)
print(novel_chapter_name)
chapt_text=" "+novel_chapter_name[0]+'n'+get_regular_text(text)
return chapt_text
def download_onechapter(words):
#下面是文件存目录,修改你的路径
path="/home/dflx/下载/novel/永夜君王.txt"
with open(path,'a+',encoding="utf-8") as f:
for word in words:
f.write(word)
f.write('n')
def chapter_all(url,re3,host):
html=get_html(url)
#print(html)
chapter_list=novel_information(html,re3)
print("length=",len(chapter_list),type(chapter_list))
chapters=[host+ i for i in chapter_list]
chapters=[i+'.html' for i in chapters]
print(chapters)
#print(chapters.index("https://www.xxbiquge.com/68_68479/4010677.html"))
return chapters
def download_novel(url_all):
#for index in range(472,len(url_all)):
for chapt in url_all:
try:
words=get_onechapter(chapt)
download_onechapter(words)
except Exception:
continue
finally:
print("GOTO ANOTHER CHAPTER")
count=0;
def main():
host="https://www.xxbiquge.com"
#下面是小说目录界面,可以打开参考一下,修改成你需要的.
url0="https://www.xxbiquge.com/1_1797/"
re3=r'<dd><a href="(.*?).html"'
start=time.clock();
try:
all=chapter_all(url0,re3,host)
download_novel(all)
except Exception as e:
print("has error"+str(e))
finally:
end=time.clock()
print("总计用时:%.2f s"%(end-start))
图片.png
- rpc框架之 avro 学习 2 - 高效的序列化
- rpc框架之HA/负载均衡构架设计
- 使用Docker-Docker for Web Developers(2)
- 打造高效前端工作环境-tmuxinator
- 在Linux Mint上安装node.js和npm
- JS魔法堂:再识Number type
- (cljs/run-at (JSVM. :browser) "搭建刚好可用的开发环境!")
- (cljs/run-at (->JSVM :browser) "语言基础")
- 微博爬虫
- 电话域名受欢迎,微语言融资3000万
- 前端魔法堂——异常不仅仅是try/catch
- (cljs/run-at (JSVM. :all) "一起实现柯里化")
- (cljs/run-at (JSVM. :browser) "简单类型可不简单啊~")
- 前端魔法堂:解秘FOUC
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 谈一谈如何在Python开发中拒绝SSRF漏洞
- eval长度限制绕过 && PHP5.6新特性
- Cookie-Form型CSRF防御机制的不足与反思
- Python 格式化字符串漏洞(Django为例)
- unity官方案例精讲(第三章)--星际航行游戏Space Shooter
- Pwnhub Web题Classroom题解与分析
- WTForm的URLXSS谈开源组件的安全性
- 谈一谈复杂的正则表达式分析
- Linux 用户名、主机添加背景色
- percona-toolkit大表操作DDL使用 2.1. 数据库字符集修改2.2. 数据库建库、授权操作2.3. 数据库建表、插入数据4.1. 添加表字段【
- PHPMailer 代码执行漏洞(CVE-2016-10033)分析(含通用POC)
- linux 平均负载 load average 的含义【转】
- zookeeper-01 概述
- zookeeper-02 部署
- zookeeper-03 命令行操作