当前位置: 首页 > news >正文

Python实现某du文库vip内容下载,保存成PDF

前言

是谁,是谁在网页上搜索往年考试卷题+答案的时候只能阅读前两页的选择题,是谁在搜几千字的文档资料只能看25%,是谁在百度文库找七找八的时候所有的东西都要付费才能继续看…

我先说 是我自己

我又不经常用,只有偶尔需要看看,还要我掏钱包,我说不行,绝对不行

什么都行 谈钱不行

咱没钱,咱有技术,直接让python帮我

今天就来分享下 👇

用Python实现某du文库vip内容下载, 保存到word文档

前期准备

环境使用

  • python 3.8
  • pycharm

模块使用

  • requests >>> 数据请求模块 pip install requests
  • docx >>> 文档保存 pip install python-docx
  • re 内置模块 不需要安装
  • ctrl + R 爬虫: 首先你得看得数据, 才能想办法获取

代码实现步骤

  1. 发送请求, 模拟浏览器对于url地址发送请求图片数据包:

  2. 获取数据, 获取服务器返回响应数据
    开发者工具: response

  3. 解析数据, 提取图片链接地址

  4. 保存数据, 把图片内容保存到本地文件夹

  5. 做文字识别, 识别文字内容

  6. 把文字数据信息, 保存word文档里面

导入数据请求模块 import requests
导入格式化输出模块 from pprint import pprint
导入base64 import base64
导入os模块 import os
导入文档模块 from docx import Document
导入正则 import re
导入 json import json

1. 发送请求, 模拟浏览器对于url地址发送请求

  • 长链接, 可以分段写
  • 问号前面: url链接
  • 问号后面: 请求参数/查询参数

源码.点击.领取.即可

# 确定请求链接
url = 'https://*****.com/gsearch/rec/pcviewdocrec'# 请求参数data = {'docId': docId,'query': name,'recPositions': ''}# 请求头headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36'}#发送请求response = requests.get(url=url, params=data, headers=headers)# <Response [200]> 响应对象, 200 表示请求成功print(response)

2. 获取数据, 获取服务器返回响应数据

开发者工具: response

sponse.json() 获取响应json字典数据, 但是返回数据必须是完整json数据格式 花括号 {}
esponse.text 获取响应文本数据, 返回字符串  任何时候都可以, 但是基本获取网页源代码的时候
response.content 获取响应二进制数据, 返回字节 保存图片/音频/视频/特定格式文件print(response.json())  打印字典数据, 呈现一行
pprint(response.json()) 打印字典数据, 呈现多行, 展开效果

3. 解析数据, 提取图片链接地址

字典取值: 键值对 根据冒号左边内容[键], 提取冒号右边的内容[值]

# 定义文件名 整型
num = 1
# for循环遍历, 把列表里面元素一个一个提取出来
for index in response.json()['data']['relateDoc']:# index 字典呀pic = index['pic']print(pic)

4. 保存数据 发送请求 + 获取数据 二进制数据内容

# img_content = requests.get(url=pic, headers=headers).content
# # 'img\\'<文件夹名字> + str(num)<文件名> + '.jpg'<文件后缀>  mode='wb' 保存方式, 二进制保存
# # str(num) 强制转换成 字符串
# # '图片\\' 相对路径, 相对于你代码的路径 你代码在那个地方, 那个代码所在地方图片文件夹
# with open('图片\\' + str(num) + '.jpg', mode='wb') as f:
#     # 写入数据 保存数据  把图片二进制数据保存
#     f.write(img_content)
# # 每次循环 + 1
# print(num)
# num += 1

5. 做文字识别, 识别文字内容

文字识别:

  • 注册一个百度云API账号
  • 创建应用 并且去免费领取资源
  • 在技术文档里面 Access Token获取
  • 调用API接口做文字识别
python学习交流Q群:690643772 ### 源码领取
def get_content(file):# client_id 为官网获取的AK, client_secret 为官网获取的SKhost = 'https://*****comp'response = requests.get(host)access_token = response.json()['access_token']'''通用文字识别(高精度版)'''request_url = "https://********.com/rest/2.0/ocr/v1/accurate_basic"# 二进制方式打开图片文件f = open(file, 'rb')img = base64.b64encode(f.read())params = {"image":img}request_url = request_url + "?access_token=" + access_tokenheaders = {'content-type': 'application/x-www-form-urlencoded'}json_data = requests.post(request_url, data=params, headers=headers).json()# 列表推导式words = '\n'.join([i['words'] for i in json_data['words_result']])return words
  • 读取文件夹里面所有图片内容
content_list = []
files = os.listdir('img\\')
for file in files:
filename = 'img\\' + file
words = get_content(file=filename)
print(words)
content_list.append(words)

6. 把文字数据信息, 保存word文档里面

  • 保存word文档里面
doc = Document()
  • 添加第一段文档内容
content = '\n'.join(content_list)
doc.add_paragraph(content)
doc.save('data.docx')

最后

今天的分享到这里就结束了 有问题的宝子可以评论区留言,或者点击末尾名片进行交流学习哦

在这里插入图片描述

相关文章:

Python实现某du文库vip内容下载,保存成PDF

前言 是谁&#xff0c;是谁在网页上搜索往年考试卷题答案的时候只能阅读前两页的选择题&#xff0c;是谁在搜几千字的文档资料只能看25%&#xff0c;是谁在百度文库找七找八的时候所有的东西都要付费才能继续看… 我先说 是我自己 我又不经常用&#xff0c;只有偶尔需要看看…...

vue3.0 模板语法

文章目录前言&#xff1a;1. 内容渲染指令1.1 v-text1.2 {{ }}插值表达式1.3 v-html2. 双向绑定指令2.1 v-model2.2 v-model的修饰符3. 属性绑定指令3.1 动态绑定多个属性值3.2 绑定class和style属性4.条件渲染指令4.1 v-if、v-else-if、v-else4.2 v-show4.3 v-if与v-show的区别…...

【GlobalMapper精品教程】054:标签(标注)功能案例详解

同ArcGIS标注一样,globalmapper提供了动态标注的功能,称为标签,本文详解标签的使用方法。 文章目录 一、标签配置二、创建标签图层三、标签图层选项1. 标签字段2. 标签样式3. 标签格式4. 标签语言5. 标签优先级一、标签配置 在配置页面的【矢量显示】→标签选项卡下,有标签…...

超详细树状数组讲解(+例题:动态求连续区间和)

树状数组的作用&#xff1a;快速的对数列的一段范围求和快速的修改数列的某一个数为什么要使用树状数组&#xff1a;大家从作用中看到快速求和的时候可能会想到为什么不使用前缀和只需要预处理一下就可以在O(1)的时间复杂度下实行对于数列的一段范围的和但是我们可以得到当我们…...

【学习笔记】AGC055

A - ABC Identity 如果只有AAA,BBB两种字符的话&#xff0c;我们发现要寻找p∈[1,n]p\in [1,n]p∈[1,n]&#xff0c;使得[1:p][1:p][1:p]中AAA的数目与[p1:n][p1:n][p1:n]中BBB的数目相同。 如果有A,B,CA,B,CA,B,C三种字符&#xff0c;我们可以先将A,BA,BA,B分离出来&#xf…...

墨者——内部文件上传系统漏洞分析溯源 内部文件上传系统漏洞分析溯源

墨者——内部文件上传系统漏洞分析溯源 内部文件上传系统漏洞分析溯源 1.选择合适的文件上传 2.可以看到为*.asp文件 3.可以推测出此站点为IIS 4.上传shell.asp试试 5.上传报错&#xff0c;将其改名为shell.asp.txt上传&#xff0c;发现上传成功 6.有个问题就是服务器将我们所…...

5.2 Python if语句

5.2.3 检查是否不相等要判断两个值是否不等&#xff0c;可结合使用惊叹号和等号(!)&#xff0c;其中的惊叹号表示不&#xff0c;在很多编程语言中都如此。下面再使用一条if语句来演示如何使用不等运算符。我们将把要求的比萨配料存储在一个变量中&#xff0c;再打印一条消息&am…...

ubuntu gerrit 配置

1 - 简介 参考地址: https://www.cnblogs.com/anliven/p/12019974.html https://www.cnblogs.com/anliven/p/11980432.html 虽然Gerrit 本身提供 Code Review和 Git 仓库的两大功能,但实际上很多项目用的是其他的Git仓库,例如GitLab和GitHub。 一般情况下,Gerrit位于最终…...

运动蓝牙耳机什么牌子好,运动蓝牙耳机品牌推荐

现在市面上运动耳机的品牌越来越多&#xff0c;还不知道选择哪一些运动耳机品牌&#xff0c;可以看看下面的一些耳机分享&#xff0c;运动耳机需要注意耳机的参数配置以及佩戴舒适度&#xff0c;根据自己最根本的使用需求来选择运动耳机。 1、南卡Runner Pro4骨传导蓝牙运动耳…...

(7)C#传智:方法及参数、重载(第7天)

一、方法作用域 被调用者需要调用者的值,方法有二: 1.传参数. private static void Main(string[] args){int m 3;Console.WriteLine(m);Console.ReadKey();}public static int GetMax(int m){return m 3;} 2.使用静态字段模拟全局. 多个方法都需要时&#x…...

Python 函数式编程

函数式编程&#xff1a;允许把函数本身作为参数传入另一个函数&#xff0c;还允许返回一个函数&#xff01; 1.高阶函数 一个函数可以接收另一个函数作为参数&#xff0c;这种函数称之为高阶函数 abs(-10) 是函数调用 abs是函数本身 abs函数名其实是一个变量名 变量可以…...

pandas读取EXCEL列名重复问题解决——pandas设置多行为列名(多层列名)

问题呈现 这是我在问答区看到的一个问题。 问&#xff1a;在python中使用pandas读取Excel数据&#xff0c;重复数据被区分了&#xff0c;如何做到重复数据不被区分&#xff1f; 解决思路 很明显&#xff0c;这是pandas读取excel文件时列名设置问题&#xff0c;我第一时间想…...

CMake常用语法

1. cmake_minimum_required(VERSION 3.4.1) 指定需要的最小的cmake版本 2. aux_source_directory 查找源文件并保存到相应的变量中: #查找当前目录下所有源文件并保存至SRC_LIST变量中 aux_source_directory(. SRC_LIST)3. add_library 3.1 添加一个库 add_library(<n…...

Java知识复习(一)基础知识

1、什么是JVM、JDK和JRE&#xff1f; JVM是指运行Java字节码的虚拟机。而字节码文件指的就是扩展名为.class的文件&#xff0c;JDK指功能齐全的Java SDK&#xff0c;能够创建和编译程序JRE指Java运行的环境&#xff0c;包括JVM、类库和命令等 2、重载和重写的主要区别 重载&…...

springboot+vue.js校园车辆用车预约管理系统

springboot是基于spring的快速开发框架, 相比于原生的spring而言, 它通过大量的java config来避免了大量的xml文件, 只需要简单的生成器便能生成一个可以运行的javaweb项目, 是目前最火热的java开发框架 前端技术&#xff1a;nodejsvueelementui本项目的应用场景描述如下&…...

【 K8s 源码之调度学习】Pod 间亲和性和反亲和性的源码分析

查看案例 字段含义podAffinityPod 间的亲和性定义podAntiAffinityPod 间的反亲和性定义requiredDuringSchedulingIgnoredDuringExecution硬性要求&#xff0c;必须满足条件&#xff0c;保证分散部署的效果最好使用用此方式preferredDuringSchedulingIgnoredDuringExecution软性…...

计及绿证交易及碳排放的含智能楼宇微网优化调度(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

场景扩展,体验升级 | DBMotion新增无公网数据库迁移、支持监控报警等多项功能

丝滑的零停机数据库在线迁移工具——DBMotion&#xff0c;又双叒叕发新版&#xff1a;新增的网关、数据源功能&#xff0c;让你无公网IP的数据库也可以迁移&#xff1b;新增的监控功能&#xff0c;让你对迁移性能一目了然&#xff1b;新增的报警功能&#xff0c;让你及时获得同…...

【正点原子FPGA连载】第十五章eMMC读写测试实验 摘自【正点原子】DFZU2EG_4EV MPSoC之嵌入式Vitis开发指南

1&#xff09;实验平台&#xff1a;正点原子MPSoC开发板 2&#xff09;平台购买地址&#xff1a;https://detail.tmall.com/item.htm?id692450874670 3&#xff09;全套实验源码手册视频下载地址&#xff1a; http://www.openedv.com/thread-340252-1-1.html 第十五章eMMC读写…...

i2c子系统

i2c 硬件协议 Linux 应用层读写i2c 数据 在Linux系统上&#xff0c;不仅可以在内核中使用 i2c 总线发送、接收数据&#xff0c;同时也支持应用层使用i2c 总线发送、接收。 如果在内核中使能了drivers/i2c/i2c-dev.c 配置&#xff0c;内核就会为每一个i2c 控制器生成一个/dev/…...

Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误

HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误&#xff0c;它们的含义、原因和解决方法都有显著区别。以下是详细对比&#xff1a; 1. HTTP 406 (Not Acceptable) 含义&#xff1a; 客户端请求的内容类型与服务器支持的内容类型不匹…...

基于当前项目通过npm包形式暴露公共组件

1.package.sjon文件配置 其中xh-flowable就是暴露出去的npm包名 2.创建tpyes文件夹&#xff0c;并新增内容 3.创建package文件夹...

uniapp微信小程序视频实时流+pc端预览方案

方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度​WebSocket图片帧​定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐​RTMP推流​TRTC/即构SDK推流❌ 付费方案 &#xff08;部分有免费额度&#x…...

C++八股 —— 单例模式

文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全&#xff08;Thread Safety&#xff09; 线程安全是指在多线程环境下&#xff0c;某个函数、类或代码片段能够被多个线程同时调用时&#xff0c;仍能保证数据的一致性和逻辑的正确性&#xf…...

音视频——I2S 协议详解

I2S 协议详解 I2S (Inter-IC Sound) 协议是一种串行总线协议&#xff0c;专门用于在数字音频设备之间传输数字音频数据。它由飞利浦&#xff08;Philips&#xff09;公司开发&#xff0c;以其简单、高效和广泛的兼容性而闻名。 1. 信号线 I2S 协议通常使用三根或四根信号线&a…...

Python Ovito统计金刚石结构数量

大家好,我是小马老师。 本文介绍python ovito方法统计金刚石结构的方法。 Ovito Identify diamond structure命令可以识别和统计金刚石结构,但是无法直接输出结构的变化情况。 本文使用python调用ovito包的方法,可以持续统计各步的金刚石结构,具体代码如下: from ovito…...

免费数学几何作图web平台

光锐软件免费数学工具&#xff0c;maths,数学制图&#xff0c;数学作图&#xff0c;几何作图&#xff0c;几何&#xff0c;AR开发,AR教育,增强现实,软件公司,XR,MR,VR,虚拟仿真,虚拟现实,混合现实,教育科技产品,职业模拟培训,高保真VR场景,结构互动课件,元宇宙http://xaglare.c…...

Git常用命令完全指南:从入门到精通

Git常用命令完全指南&#xff1a;从入门到精通 一、基础配置命令 1. 用户信息配置 # 设置全局用户名 git config --global user.name "你的名字"# 设置全局邮箱 git config --global user.email "你的邮箱example.com"# 查看所有配置 git config --list…...

提升移动端网页调试效率:WebDebugX 与常见工具组合实践

在日常移动端开发中&#xff0c;网页调试始终是一个高频但又极具挑战的环节。尤其在面对 iOS 与 Android 的混合技术栈、各种设备差异化行为时&#xff0c;开发者迫切需要一套高效、可靠且跨平台的调试方案。过去&#xff0c;我们或多或少使用过 Chrome DevTools、Remote Debug…...

Pydantic + Function Calling的结合

1、Pydantic Pydantic 是一个 Python 库&#xff0c;用于数据验证和设置管理&#xff0c;通过 Python 类型注解强制执行数据类型。它广泛用于 API 开发&#xff08;如 FastAPI&#xff09;、配置管理和数据解析&#xff0c;核心功能包括&#xff1a; 数据验证&#xff1a;通过…...