爬虫案例 某网站小说下载

news/2024/5/20 17:38:05/文章来源:https://nmydt.blog.csdn.net/article/details/113135828

由于版权问题,暂不对网站明述。
正常使用xpath进行爬取,没有反爬措施

爬取使用了进度条,说明一下进度条的使用和爬取遇到的问题:

  • \r 表示将光标的位置回退到本行的开头位置
    \b表示将光标的位置回退一位

  • print("\r", end="") end=""表示下次打印不换行,又因为\r表示将光标的位置回退到本行的开头位置,所以也就是将上一次打印的覆盖掉

  • " / " 表示 浮点数除法,返回浮点结果; " // "表示整数除法。

  • xpath获取一个标签文本时出现乱码:对文本使用 .encode(‘ISO-8859-1’).decode(“gbk”) 即可

  • 缓冲区的刷新方式:

    flush()刷新缓存区
    缓冲区满时,自动刷新
    文件关闭或者是程序结束自动刷新。

    import time
    import sysfor i in range(5):print(i,end='')# sys.stdout.flush()time.sleep(0.001)
    #注释打开和关闭效果不同
    

    当我们打印一些字符时,并不是调用print函数后就立即打印的。一般会先将字符送到缓冲区,然后再打印。这就存在一个问题,如果你想等时间间隔的打印一些字符,但由于缓冲区没满,不会打印。就需要采取一些手段。如每次打印后强行刷新缓冲区。

爬取结果:
在这里插入图片描述

在这里插入图片描述

代码

import requests
from lxml import etree
import re,os,time,sysm=0
k=0#解析小说正文页面
def parse_page(url):r = requests.get(url).texthtml = etree.HTML(r)title = html.xpath('//div[@class="content"]/h1/text()')[0]text = html.xpath('//div[@id="content"]/text()')if len(text)==0:passnew_text = []for te in text[:-4]:new_text.append(te)err = ['?', '?','\"', '“','|',':','(','*','(']#判断小说章节名是否合法if len([True for er in err if er in title])!=0:y = re.findall('[((\??"“”|:/\*].*',title)[0]new_title = title.replace(y,'')save(new_title,new_text)else:  save(title,new_text)#使用进度条
def down_progress(len_url):global mglobal kif k!=0 and m<=99 and k%(int)(len_url/100)==0:m=m+1print("\r", end="")print("Download progress: {}%: ".format(m), "▋" * (m // 2), end="")sys.stdout.flush()k+=1#获取小说的所有正文Url
def get_url(url):global novel_nameglobal len_urlr = requests.get(url).texthtml = etree.HTML(r)novel_name = html.xpath('//div[@class="info"]/h2/text()')[0].encode('ISO-8859-1').decode("gbk")if not os.path.exists(novel_name):os.mkdir(novel_name)dd = html.xpath('//div[@class="listmain"]/dl//dd')len_url = len(dd)-12print("下载的小说名为:"+novel_name)print("共需要下载{}章".format(len_url))print("保存地址为:"+os.getcwd()+"\\"+ novel_name)print("下载大概需"+str('%.2f'%(len_url*1.1/60))+"分钟")print("*"*30+'下载开始'+"*"*30)for d in dd[12:]:#使用进度条down_progress(len_url)url = "https://www.bqkan.com/" + d.xpath('./a/@href')[0]parse_page(url)time.sleep(0.05)
#将小说正文写入文本文件中
def save(title,text):f = open(novel_name+"/"+title+'.txt','a',encoding='utf-8')for te in text:f.write(te)f.write('\n')def main():url = input("请输入小说目录下载地址:")get_url(url)if __name__ == '__main__':start = time.time()main()end = time.time()print()print("*"*30+'下载已完成'+"*"*30)print("下载耗费时间:{}分钟".format(str('%.2f'%((end-start)/60))))

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_735563.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

江苏高考时间2021成绩查询,小高考时间2021具体时间江苏-江苏小高考成绩查询公布时间及网站...

选择科目测一测我能上哪些大学选择科目领取你的专属报告>选择省份关闭请选择科目确定v>2021年1月&#xff0c;全国多省举行了普通高中学业水平考试&#xff0c;其中江苏的学业水平合格性考试又被本地人称为是“小高考”&#xff0c;备受人们的关注。下面&#xff0c;我就…

仿站和模板建站的区别_企业建站:高价定制并不一定高质!

购买实物产品&#xff0c;如车、手机、衣服等&#xff0c;不考虑性价比的情况下&#xff0c;贵的一般质量会好很多&#xff0c;但建站目前还不是标准产品&#xff0c;信息高度不透明&#xff0c;普通用户没有评判标准&#xff0c;因此“贵的并不一定好”&#xff0c;而且你仔细…

利用cmd和ip入侵电脑_还偷看“不良网站”?这些麻烦都会找上你,难怪手机、电脑变卡了...

移动互联网时代&#xff0c;智能手机的功能性变得十分强大&#xff0c;借助各种APP&#xff0c;我们实现了线上支付、网购和社交等等&#xff0c;非常的便利&#xff0c;但是网络也是有双面性的&#xff0c;正确的利用确实能够带来很多方便&#xff0c;但同时也很容易误入一些“…

退出页面 数据保留_Edge新增Cookies白名单:清除数据时可保留网站登录凭证

基于Chromium的Edge新版在设置中提供了一个选项&#xff0c;允许用户在关闭浏览器的时候清除浏览数据&#xff0c;用户可以对浏览历史、下载历史、Cookies、其他网站数据和自动表单填写数据进行选择。如果你已经配置在关闭浏览器之后自动删除Cookies(也就是在关闭之后登出大部分…

ppt上的倒计时小工具_让你的PPT/论文/报表瞬间高大上的10款数据可视化工具网站推荐...

也许看这篇文章的你依旧身在学校&#xff0c;或者已然奋斗在职场&#xff0c;相信我&#xff0c;PPT绝对是只会迟到但决不会缺席的一个存在。其中数据是PPT当中一个非常重要的内容组成部分&#xff0c;而高效的展示数据的方式就将数据做成可视化的图表形式。柱状图、折线图或者…

网络请求可以返回数据的网站_微信小程序入门4网络请求数据显示

小程序调用wx.request(Object object)方法发起网络请求&#xff0c;域名必须使用HTTPS/WSS协议。默认超时时间和最大超时时间都是60S。官方示例代码&#xff1a;wx.request({ url: test.php, //仅为示例&#xff0c;并非真实的接口地址 data: { x: , y: }, header:…

mysql小吃代码_PHP+MySQL菜品食谱美食网站的设计与实现

美食是人类永恒的追求&#xff0c;现在有很多的美食爱好者&#xff0c;他们希望通过自己的各种方式来学习更多的美食制作方式&#xff0c;以及分享自己制作美食的一些过程&#xff0c;说让更多的人。享受到更加美味可口的饭菜。本系统也是基于这样的目的来进行开发的。本系统是…

ie java 下载_EeJava(Java中文编程软件)下载-EeJava(Java中文编程软件)PC版下载v1.1.2-IE浏览器中文网站...

EeJava能够为用户提供专业强大的编程功能&#xff0c;拥有函数编辑、颜色设置、创建项目、窗口程序创建、注释、行号设置等功能&#xff0c;为您的使用操作带来便捷&#xff0c;提高工作效率。软件功能1、EeJava提供简单的编程功能&#xff0c;在软件直接编辑新的Java项目2、打…

wordpress去index.php,WordPress去除index.php的方法 WordPress网站建站教程

wordpress去除index.php的方法&#xff1a;首先登录wordpress后台&#xff1b;然后依次选择“设置-固定链接”并设置好链接&#xff1b;接着设置wordpress重写规则&#xff1b;最后在wordpress网站目录下新建htaccess文件即可。wordpress去掉index.php的方法主要有两个步骤&…

网站同时出现网站内容和html源码是什么原因_网站301实战讲解教程、几个步骤教你正确转移权重...

最近许多兄弟问我网站301有什么注意事项&#xff0c;应该怎样正确做301、本篇内容本着实战的原则、给大家讲解一下!首先讲一下301应用在什么场景里、下面我们分为两种场景&#xff1a;一、需要换域名时&#xff0c;比如最初用的域名A、后面由于各种原因感觉A不好&#xff0c;需…

linux 堆地址,堆与堆排序_Linux编程_Linux公社-Linux系统门户网站

堆排序与二叉堆的定义二叉堆是完全二叉树或者是近似完全二叉树。二叉堆满足二个特性&#xff1a;1&#xff0e;父结点的键值总是大于或等于(小于或等于)任何一个子节点的键值。2&#xff0e;每个结点的左子树和右子树都是一个二叉堆(都是最大堆或最小堆)。当父结点的键值总是大…

controller中跳转第三方网站_[SpringBoot2.X]25.04-SpringBoot对Controller中其他参数的校验...

SpringBoot对Controller中其他参数的校验之前的校验是对一个实体对象做校验,但有的时候就不是一个实体对象,而是属性值,那怎么进行呢?1编写页面2对参数指定校验规则3在Controller中开启校验4通过全局异常处理来跳转页面配置了controller开启校验后产生了异常反馈,那如果让这个…

压缩html页面 seo,HTML、CSS、JS的SEO优化

一、清理页面中的垃圾代码。清理垃圾代码是指删除页面中的冗余代码&#xff0c;可以删除80%的冗余代码。垃圾代码主要指那些删除了也不会对页面有任何影响的非必要代码。 最常见的垃圾代码&#xff0c;空格 空格字符是网页中最常见的垃圾代码。但并不是指标签&#xff0c;而是有…

开源代码网站_【程序源代码】开源微服务开发amp;治理框架

“ 关键字&#xff1a;精简、实用&#xff0c;适合开发。”正文&#xff1a;springboot springcloud01—基于Spring Cloud开发的项目群&#xff0c;是对Spring Cloud微服务架构的综合应用实践和基础开发框架。目前最轻量最好用的开源微服务开发&治理框架02—功能&#xff1…

python网站开发linux_10个用于Web开发的最好 Python 框架

Python 是一门动态、面向对象语言。其最初就是作为一门面向对象语言设计的&#xff0c;并且在后期又加入了一些更高级的特性。除了语言本身的设计目的之外&#xff0c;Python标准 库也是值得大家称赞的&#xff0c;Python甚至还自带服务器。其它方面&#xff0c;Python拥有足够…

php制作门户网站,自己设计制作门户网站模板风格【PHP小白搭建的】

(PS&#xff1a;我是PHP小白)自己设计的门户网站模板风格&#xff0c;目前正在本地测试&#xff0c;还未正式上线。介绍一下功能点&#xff1a;1、首页的幻灯片和图文资讯&#xff0c;在幻灯片分类里面增加了两个分类分别是&#xff1a;portal_index和img_index&#xff1b;2、…

网站不许 firefox 显示被嵌入的网页_对于最新版 Firefox,你了解多少?

前不久&#xff0c;Firefox 发布最新版——Firefox 78&#xff0c;大家都更新了吗&#xff1f;对于新功能了解多少&#xff1f;今天给大家详细介绍一下。此版本支持 10.9、10.10 与 10.11 版的 macOS。如果您是这三种 macOS 版本的用户&#xff0c;接下来一年都将享有 Firefox …

网站子域名不同服务器,不同域名的网站能在一个服务器吗

不同域名的网站能在一个服务器吗 内容精选换一换内网域名解析是基于VPC网络的域名解析过程&#xff0c;通过华为云内网DNS把域名(如ecs.com)转换成私网IP地址(192.168.1.1)。内网域名解析实现云服务器在VPC内直接通过内网域名互相访问。同时&#xff0c;还支持不经公网&#xf…

网站可行性报告范文_鄂州编写可行性报告公司2020范文格式

主要经营范围包括&#xff1a;可行性研究报告、项目建议书、资金申请报告、节能评估报告、商业计划书、资金实施细则、资金统筹方案、微观经济指标分析、招投标书等。环建公司拥有多名专业精通、丰富的注册工程师、注册、工程师&#xff0c;为你提供项目规划、企业等企业方面的…

h5 网站 模板 pan_12月最新服务器打包运营级价值几千的H5商城源码

12月最新服务器打包运营级价值几千的H5商城源码、好友分享的&#xff0c;服务器上打包&#xff0c;完完整整&#xff0c;一个字节不缺。这套貌似在外面还是值个几千的&#xff0c;但是没什么好分享了&#xff0c;就把这套分享给大家把。东西如下图&#xff0c;有喜欢的自己拿去…