下个文档还要马内?还好我会Python,教大家来一手强制复制粘贴

news2024/9/25 13:25:18

前因后果

公司有人阳了,今天在家上班,突然小姨子就问我有没有baidu文库会员,想下载点东西,我心想这还要会员?用Python不是分分钟的事情!

然后我非常自信的告诉她不用会员随便下载,结果她顺势想来我家,还问我她姐姐在不在家,趁我一个人在家过来想干嘛?本着男孩子一个人在家要好好保护自己的原则,于是我过段拒绝了她!

兄弟们我做的对吗?

正文

牛逼吹完了,咱们来开始今天的内容,咱们不仅要强制复制粘贴,还要自动保存到world文档,就问你刑不刑!


需要的模块

requests  # 数据请求模块
docx  # 文档保存 
re    # 内置模块 不需要安装

除了 re 模块,前面两个都是第三方模块,需要手动安装,win+r 打开运行框输入cmd,点击确定弹出命令提示符窗口输入 pip install 加上模块名即可。

docx 需要加上Python ,pip install python-docx

流程思路

基本思路流程

一、分析数据来源

找文档数据内容, 是在那个url里面生成的,通过开发者工具进行抓包分析。

  • 打开开发者工具: F12 / 鼠标右键点击检查选择network
  • 刷新网页: 让本网页数据内容重新加载一遍,如果你是非VIP账号, 看数据, 图片形式 —> 把数据<图片> 获取下来 —> 做文字识别;
  • 分析文库数据内容,,图片所在地址;
  • 获取所有图片内容: 文库数据 --> 图片形式 —> 所有图片内容保存下载
  • 文字识别, 把图片文字识别出来, 保存word文档里面

二、代码实现步骤

  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. 注册一个百度云API账号
2. 创建应用 并且去免费领取资源
3. 在技术文档里面 Access Token获取
4. 调用API接口做文字识别

client_id 为官网获取的AK, client_secret 为官网获取的SK

host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=Gu7BGsfoKFZjLGvOKP7WezYv&client_secret=rGa2v2FcVnxBDFlerSW5H0D2eO7nRxdp'
response = requests.get(host)
access_token = response.json()['access_token']

通用文字识别(高精度版)

request_url = "https://aip.baidubce.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_token
headers = {'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)

保存word文档里面

doc = Document()
# 添加第一段文档内容
content = '\n'.join(content_list)
doc.add_paragraph(content)
doc.save('data.docx')

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

请求头

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'
}
html_data = requests.get(url=link, headers=headers).text
json_data = json.loads(re.findall('var pageData = (.*?);', html_data)[0])
pprint(json_data)
for j in json_data['aggInfo']['docList']:
    name = j['title']  # 名字
    score = j['score'] # 评分
    viewCount = j['viewCount'] # 阅读量
    downloadCount = j['downloadCount'] # 下载量
    docId = j['docId'] # 数据包ID

确定请求链接

url = 'https://wenku.baidu.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.json() 获取响应json字典数据, 但是返回数据必须是完整json数据格式 花括号 {}
  • response.text 获取响应文本数据, 返回字符串 任何时候都可以, 但是基本获取网页源代码的时候
  • response.content 获取响应二进制数据, 返回字节 保存图片/音频/视频/特定格式文件

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

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

for循环遍历, 把列表里面元素一个一个提取出来

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

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

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

效果展示

world文档

最后

兄弟们学习python,有时候不知道怎么学,从哪里开始学。掌握了基本的一些语法或者做了两个案例后,不知道下一步怎么走,不知道如何去学习更加高深的知识。
那么对于这些大兄弟们,我准备了大量的免费视频教程,PDF电子书籍,直接在文末名片自取即可!包括本文源代码!

好了不说了,今天的分享就这里结束了,小姨子过来找我麻烦了!兄弟们下次再见!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

10两级电力市场环境下计及风险的省间交易商最优购电模型

参考文章&#xff1a; 两级电力市场环境下计及风险的省间交易商最优购电模型—郭立邦&#xff08;电网技术2019&#xff09; 主要内容&#xff1a; 为进一步推动电力市场建设&#xff0c;促进电力资源大范围优化配置&#xff0c;我国正逐步建成包含省间与省内电力交易的两级…

齿轮魔方、五阶齿轮魔方

齿轮魔方 1&#xff0c;魔方三要素 &#xff08;1&#xff09;组成部件 部件和三阶魔方完全对应&#xff0c;但每个棱块的朝向不止2种&#xff0c;而是有6种。 &#xff08;2&#xff09;可执行操作 只有3种操作&#xff0c;即上下层同时旋转180度、左右180度、前后180度。…

一文助你快速理解Cookie,Session,Token的区别

目录 一、Cookie简介 1.1.cookie定义 1.2.cookie鉴权原理 1.3.cookie的分类 二、Session简介 2.1.session的定义 2.2.session会话机制 2.3.Session 的缺点 三、cookie与session区别 3.1.存储位置 3.2.安全性 3.3.占用服务器资源 3.4.存储空间 3.5.存储类型 3.6.…

编程入门宝典,刚开始学习编程新手必看的5点建议!

编程就像围城&#xff0c;城里的人想出去&#xff0c;城外的人想进来。 对于零基础的小白&#xff0c;要杀入代码的战场需要准备好哪些东西呢?最帅的萌宝在此给大家分享5点建议。 1、选择编程语言 编程首要还是选择好适合自己的语言。 编程语言有&#xff1a;C/C、java、VB、P…

零基础学Python:编程规范

1. 注释 python注释也有自己的规范&#xff0c;在文章中会介绍到。注释可以起到一个备注的作用&#xff0c;团队合作的时候&#xff0c;个人编写的代码经常会被多人调用&#xff0c;为了让别人能更容易理解代码的通途&#xff0c;使用注释是非常有效的。 在说规范之前我们有必…

微服务综合部署——SpringBoot项目制作Docker镜像注册在Zookeeper并利用K8S技术部署

一、如果你要从头开发一个基于微服务架构的项目&#xff0c;项目中的服务最终要部署在k8s管理的镜像环境中&#xff0c;你认为应如何创建项目&#xff1f;与本次实验过程相比&#xff0c;哪些改进可以让开发更加合理高效&#xff1f; 第一步&#xff1a;搭建项目并制作合适的j…

回溯算法总结

目录介绍伪代码例题&#xff1a;解释&#xff1a;回溯算法中的优化去重伪代码剪枝常见题型子集例题全排列例题参考资料介绍 递归(DFS)是一个劲的往某一个方向搜索&#xff0c;而回溯算法建立在 DFS 基础之上的&#xff0c;但不同的是在搜索过程中&#xff0c;达到结束条件后&am…

SAP ABAP 扫描 ABAP 源代码(RS_ABAP_SOURCE_SCAN)

SAP ABAP 扫描 ABAP 源代码&#xff08;RS_ABAP_SOURCE_SCAN&#xff09; 引言&#xff1a; RS_ABAP_SOURCE_SCAN 是一个 SAP 标准 ABAP 报表程序&#xff0c;通过输入字符串文本&#xff0c;扫描 ABAP 源代码&#xff0c;列示查找字符串在 ABAP 源代码中出现的位置清单。本文…

20行python代码的入门级小游戏

0、背景&#xff1a; 作为一个python小白&#xff0c;今天从菜鸟教程上看了一些python的教程&#xff0c;看到了python的一些语法&#xff0c;对比起来&#xff08;有其他语言功底&#xff09;&#xff0c;感觉还是非常有趣&#xff0c;就随手添了一点内容&#xff0c;改了一个…

【车载开发系列】CAN总线通信---总线报文格式

【车载开发系列】CAN总线通信—总线报文格式 CAN总线通信---总线报文格式【车载开发系列】CAN总线通信---总线报文格式一.什么是ISO15765二.ISO15765的目的三.单帧传输的概念四.多帧传输的概念五.诊断报文格式1&#xff09;首帧FF2&#xff09;连续帧CF3&#xff09;流控帧FC4&…

【JavaScript】for循环

文章目录for循环案例1&#xff1a;两数相加案例2&#xff1a;绘制九九乘法表案例3&#xff1a;水仙花数案例4&#xff1a;绘制菱形案例5&#xff1a;计算表达式结果break和continue图片切换效果案例&#xff08;轮播图结构&#xff09;一、JavaScript代码二、HTML结构和CSS样式…

基于java+springmvc+mybatis+vue+mysql的演出道具租赁管理系统

项目介绍 前端页面&#xff1a; 功能&#xff1a;首页、道具出租、公告资讯、个人中心、后台管理 管理员后台页面&#xff1a; 功能&#xff1a;首页、个人中心、用户管理、商家管理、道具类型管理、道具出租管理、租赁订单管理、道具归还管理、我的收藏管理、系统管理 用户…

密西根大学张阳实验室郑伟博士在CASP15蛋白质结构预测大赛中斩获多项冠军

简报&#xff1a;在有着蛋白质结构预测领域奥林匹克竞赛之称的最新一届CASP比赛中&#xff08;CASP15&#xff09;&#xff0c;密西根大学张阳教授和Peter Freddolino教授实验室的郑伟博士在多个比赛项目中获得冠军。其中D-I-TASSER算法&#xff08;参赛名&#xff1a;“UM-TBM…

nodejs银行取号系统vue

目 录 1绪论 1 1.1项目研究的背景 1 1.2开发意义 1 1.3项目研究现状及内容 5 1.4论文结构 5 2开发技术介绍 7 2.1 B/S架构 7 2.2 MySQL 介绍 7 2.3 MySQL环境配置 7 3系统分析 9 3.1可行性分析 9 3.1.1技术可行性 9 3.1.2经济可行性 …

学会4种方法,掌握端到端测试处理数据..

推荐阅读&#xff1a; [内部资源] 想拿年薪30W的软件测试人员&#xff0c;这份资料必须领取~ Python自动化测试全栈性能测试全栈&#xff0c;挑战年薪40W 对Web应用程序运行自动化的端到端测试时&#xff0c;最常见的问题之一是如何处理测试数据。端到端测试通常会在通过应用…

授权服务器搭建以及授权码模式

前面的 GitHub 授权登录主要向大家展示了 OAuth2 中客户端的工作模式。对于大部分的开发者而言&#xff0c;日常接触到的 OAuth2 都是开发客户端&#xff0c;例如接入 QQ 登录、接入微信登录等。不过也有少量场景&#xff0c;可能需要开发者提供授权服务器与资源服务器&#xf…

Spring MVC【创建与使用】

Spring MVC【创建与使用】&#x1f34e;一.Spring MVC介绍&#x1f352;1.1 什么是SpringMVC?&#x1f352;1.2 MVC 定义&#x1f352;1.3 Spring MVC 与 MVC 的区别&#x1f352;1.4 Spring MVC的基本功能&#x1f34e;二. Spring MVC项目的创建&#x1f352;2.1 Spring MVC …

代码随想录DAY51 | 309.最佳买卖股票时机含冷冻期、714.买卖股票的最佳时机含手续费

文章目录309.最佳买卖股票时机含冷冻期714.买卖股票的最佳时机含手续费309.最佳买卖股票时机含冷冻期 文章讲解&#xff1a;代码随想录 (programmercarl.com) 题目链接&#xff1a;309. 最佳买卖股票时机含冷冻期 - 力扣&#xff08;LeetCode&#xff09; 题目&#xff1a; …

Efficientdet源码详解

1.参数配置 最重要的参数配置如下 -p:配置文件&#xff0c;需要在project文件夹下新建配置文件-c:efficientdet的版本,efficientdet B0-B7-n:windows为0&#xff0c;linix根据自己的需求修改--batch_size:batch大小--data_path:数据集路径-p data --batch_size 16 其中&…

【Flask框架】——20 请求钩子

在客户端和服务器交互的过程中&#xff0c;有些准备工作或扫尾工作需要处理&#xff0c;比如&#xff1a; 在请求开始时&#xff0c;建立数据库连接&#xff1b; 在请求开始时&#xff0c;根据需求进行权限校验&#xff1b; 在请求结束时&#xff0c;指定数据的交互格式。 …