Python实现强制复制粘贴的示例详解

作者:嗨学编程 时间:2021-03-30 23:58:43 

前因后果

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

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

Python实现强制复制粘贴的示例详解

兄弟们我做的对吗?

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

需要的模块

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

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

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

流程思路

基本思路流程

一、分析数据来源

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

  • 打开开发者工具: F12 / 鼠标右键点击检查选择network

  • 刷新网页: 让本网页数据内容重新加载一遍,如果你是非VIP账号, 看数据, 图片形式 &mdash;> 把数据<图片> 获取下来 &mdash;> 做文字识别;

  • 分析文库数据内容,,图片所在地址;

  • 获取所有图片内容: 文库数据 --> 图片形式 &mdash;> 所有图片内容保存下载

  • 文字识别, 把图片文字识别出来, 保存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

效果展示

Python实现强制复制粘贴的示例详解

world文档

Python实现强制复制粘贴的示例详解

来源:https://blog.csdn.net/fei347795790/article/details/128343718

标签:Python,复制,粘贴
0
投稿

猜你喜欢

  • 解决Scrapy安装错误:Microsoft Visual C++ 14.0 is required...

    2023-03-06 19:48:57
  • Python 键盘事件详解

    2022-09-28 20:31:01
  • mysql 循环批量插入的实例代码详解

    2024-01-16 10:28:23
  • 编辑BLOG文章的一些好习惯

    2007-11-15 06:35:00
  • 基于Python实现原创程序猿乘风破浪小游戏

    2021-03-09 01:41:51
  • Python多进程共享numpy 数组的方法

    2023-12-02 07:47:17
  • javascript 将共享属性迁移到原型中去的实现方法

    2024-04-22 13:05:00
  • 基于pycharm实现批量修改变量名

    2022-01-23 05:46:21
  • Go语言集成开发环境IDE详细安装教程

    2024-04-25 15:26:12
  • python爬虫实现爬取同一个网站的多页数据的实例讲解

    2021-04-11 13:52:09
  • pytorch加载预训练模型与自己模型不匹配的解决方案

    2023-06-17 14:22:24
  • Python Web服务器Tornado使用小结

    2023-06-25 23:07:21
  • CentOS下使用yum安装python-pip失败的完美解决方法

    2023-07-09 12:23:01
  • 怎样解决MySQL 5.0.16的乱码问题

    2008-10-13 12:47:00
  • mysql 让一个存储过程定时作业的代码

    2024-01-26 18:35:28
  • Javascript中数组方法汇总(推荐)

    2023-07-16 08:33:02
  • tensorboard 可以显示graph,却不能显示scalar的解决方式

    2022-07-21 08:55:46
  • 以Python的Pyspider为例剖析搜索引擎的网络爬虫实现方法

    2022-02-15 19:11:48
  • django反向解析和正向解析的方式

    2021-11-21 11:03:49
  • 碰到MySQL无法启动1067错误问题解决方法

    2024-01-18 09:16:47
  • asp之家 网络编程 m.aspxhome.com