下载python电子书

下面展示一些 内联代码片

import requests
from lxml import etree
from urllib import parse
from pprint import pprint
from tqdm import tqdm

在这里插入图片描述

class PythonBook:
def init(self):
self.url=“https://m.jb51.net/books/list476_1.html”
self.url_page=“https://m.jb51.net/”
self.headers={ ‘User-Agent’: ‘Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36’,
‘Authorization’: ‘Bearer your_token’}

def get_book(self,url):
	req=requests.get(url=url,headers=self.headers)
	req.encoding="utf-8"
	#print(req.text)
	return req.text
	
def get_book_rar(self,url):
	req=requests.get(url=url,headers=self.headers,stream=True)
	return req.iter_content	
	
def etree_xpath(self,req_text,xpath):
	html=etree.HTML(req_text)
	list_=html.xpath(xpath)
	return list_
	
def page_url(self):
	list_page=[]
	for i in range(1,11):
		str_url=f"https://m.jb51.net/books/list476_{i}.html"
		list_page.append(str_url)
	return list_page
		
		
		
def parse_urljoin(self,list_url):
	list_book_url=[]
	for url in list_url:
		url_book=parse.urljoin(self.url_page,url)
		list_book_url.append(url_book)
	return list_book_url	
	
def flies_book(self,book_pdf,pdf_content):
	for conte in tqdm(pdf_content(chunk_size=1042)):
		with open(f"python_pdf2文件/{book_pdf}","ab") as f:
			if conte:
				f.write(conte)
	print(f"下载完成:{book_pdf}")
		
def main(self):
	list_p=self.page_url()
	for item in list_p:
		try:
			req=self.get_book(item)
			section='//section[@class="softlist"]/a/@href'
			#p='//aside/p/text()'
			url_=self.etree_xpath(req,section)
			#text=self.etree_xpath(req,p)
			list_text=self.parse_urljoin(url_)
			for book in list_text:
				reqs=self.get_book(book)
				h3='//article/div/p/text()'
				pdf_text=self.etree_xpath(reqs,h3)[1:-2]
				#print(reqs)	
				rar='//div[@id="downlink"]/a/@href'
				list_rar=self.etree_xpath(reqs,rar)[0]
				#print(list_rar)
				rar_text=self.get_book_rar(list_rar)
		
				#print(rar_text)
				file_name=list_rar.split('/')[-1]
				#print(file_name)
				self.flies_book(file_name,rar_text)
		except:
			pass 		

pythonbook=PythonBook()
pythonbook.main()
#pythonbook.page_url()
仅供学习使用,仅供学习使

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

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

相关文章

二维码门楼牌管理应用平台:促进二手交易市场的透明化与规范化

文章目录 前言一、二维码门楼牌管理应用平台的建设背景二、二维码门楼牌管理应用平台的功能特点三、二维码门楼牌管理应用平台在二手交易市场中的应用四、二维码门楼牌管理应用平台的未来展望 前言 随着互联网的快速发展,二维码技术已广泛应用于各个领域。在二手交…

【操作系统】python实现银行家算法

银行家算法是最具有代表性的避免死锁的算法。 1、算法原理 银行家算法:当一个新进程进入系统时,该进程必须申明在运行过程中所需要的每种资源的最大数目,且该数目不能超过系统拥有的资源总量。当进程请求某组资源时,系统必须先确…

HarmonyOS 应用开发-自定义Swiper卡片预览效果实现

介绍 本方案做的是采用Swiper组件实现容器视图居中完全展示,两边等长露出,并且跟手滑动效果。 效果图预览 实现思路 本解决方案通过维护所有卡片偏移的数组,实时更新卡片的偏移量,以实现swiper子组件内图片居中展示&#xff0c…

DHT11温度检测系统

DHT11温湿度传感器 产品概述 DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器,应用领域:暖通空调;汽车;消费品;气象站;湿度调节器;除湿器;家电;医…

好物推荐:六款让人眼前一亮的个人博客

1.前言 总是有人在问零基础如何搭建个人博客、有哪些好用的博客系统推荐、个人博客和国内技术社区怎么选择?诸如此类的很多问题。对于最后一个问题,我个人的看法很简单,看需求! 目前国内做的还不错的技术类社区/论坛其实还是比较…

stack和queue的使用

前言 前面我们对string、vector、list做了介绍并对底层进行了实现!本期我们继续来介绍STL容器,stack和queue! 本期内容介绍 stack 常用接口的介绍 queue 常用接口的介绍 什么是stack? 这里的栈和我们C语言实现的数据结构的那个栈功能是一样…

RabbitMQ-死信队列常见用法

目录 一、什么是死信 二、什么是死信队列 ​编辑 三、第一种情景:消息被拒绝时 四、第二种场景:. 消费者发生异常,超过重试次数 。 其实spring框架调用的就是 basicNack 五、第三种场景: 消息的Expiration 过期时长或队列TTL…

neo4j使用详解(十一、cypher自定义函数语法——最全参考)

Neo4j系列导航: neo4j安装及简单实践 cypher语法基础 cypher插入语法 cypher插入语法 cypher查询语法 cypher通用语法 cypher函数语法 neo4j索引及调优 10.自定义函数 用户定义函数用Java编写,部署到数据库中,并以与任何其他Cypher函数相同的…

Java变量详解

​ 这里写目录标题 第一章、Java中的变量分类1.1)变量分类1.2)成员变量分类1.3)成员变量和局部变量的区别 第二章、成员变量详解2.1)成员变量作用域/权限修饰符2.2)成员变量和成员属性的区别2.3)成员变量初…

网络通信流程

建立完tcp请求再发起http请求 开启系统代理之后,以clash verge为例 127.0.0.1:7897,假设hci.baidu.com的IP为153.37.235.50 发起对hci.baidu.com的HTTP请求,由于开启了系统代理不进行DNS解析,浏览器调用socket()获得一个socket&a…

GlusterFS(GFS)分布式文件系统

一、GlusterFS的概述: GlusterFS 是一个开源的分布式文件系统。 只在扩展存储容器,提高性能 并且通过多个互联网络的存储节点的进行几余,以确保数据的可用性和一致性 由存储服务器、客户端以及NFS/Samba 存储网关(可选&#xff0c…

软考中级之软件设计师---知识点汇总总结

软考中级之软件设计师---知识点汇总总结 软考介绍资格设置证书样本 计算机组成原理操作系统1. 进程的三态模型2. 磁盘调度算法 计算机网络1. 网络的分类2. 各层的互连设备3. 网络模型,协议簇4. 传输层协议TCP、UDP4.1 TCP (Transmission Control Protocol,传输控制协…

零代码与低代码开发平台

1、什么是低代码开发平台?什么是零代码开发平台? 零代码开发平台: 指的是不需要写代码就能够快速开发出业务应用/系统的平台。我们在工作中使用的业务应用,主要提供数据收集、数据处理、数据流转和展示等功能。零代码开发平台能够…

【超重磅牛市信号】减半倒计时12天!首波抛售潮接近尾声,大暴涨将如期而至!

3月,美国CPI环比出现小幅反弹由3.1%升至3.2%,美国制造业指数PMI反弹至50.3%呈现进入扩张期的态势,日本结束长达8年的负利率时代首次加息。这导致美国4月降息概率大幅下降,5月降息概率也跌至50%以下。 尽管如此,全球金融…

C#操作MySQL从入门到精通(8)——对查询数据进行高级过滤

前言 我们在查询数据库中数据的时候,有时候需要剔除一些我们不想要的数据,这时候就需要对数据进行过滤,比如学生信息中,我只需要年龄等于18的,同时又要家乡地址是安徽的,类似这种操作专栏第7篇的C#操作MySQL从入门到精通(7)——对查询数据进行简单过滤简单过滤方法就无法…

STL优先队列比较器

有两个比较器&#xff0c;在std里面&#xff0c;一个是greater&#xff0c;一个是less&#xff0c;他们都有一个可以指定的模板类型。 #include <bits/stdc.h> using namespace std; struct node {bool operator ()(const string& a, const string& b){return a…

蓝桥杯刷题-特殊年份

特殊年份 代码&#xff1a; def f(x)->bool:s list(x)if s[0]s[2] and int(s[1])1int(s[3]):return Trueelse:return False cnt 0 for _ in range(5):if f(input()):cnt1 print(cnt)

PC端音乐神器-解锁全网限制

打软件后就能发现&#xff0c;软件不需要我们登录&#xff0c;就可以使用,下载地址&#xff1a;PC端音乐神器.zip

什么是sso?

SSO&#xff08;Single Sign-On&#xff09;&#xff0c;即单点登录&#xff0c;是一种安全协议&#xff0c;它允许用户在多个应用程序之间使用同一组登录凭据进行身份验证。这意味着用户只需要登录一次&#xff0c;就可以访问多个需要身份验证的应用程序。 SSO的工作原理如下…

[C++][算法基础]合并集合(并查集)

一共有 n 个数&#xff0c;编号是 1∼n&#xff0c;最开始每个数各自在一个集合中。 现在要进行 m 个操作&#xff0c;操作共有两种&#xff1a; M a b&#xff0c;将编号为 a 和 b 的两个数所在的集合合并&#xff0c;如果两个数已经在同一个集合中&#xff0c;则忽略这个操…