带你领略python魔法~免费复制文档数据

news2024/11/28 23:54:57

前言

嗨喽~大家好呀,这里是魔王呐 ❤ ~

我们百度搜索一些东西得时候,经常找到文档里面

然后就会发现需要充值才能复制!怎么可以不花钱也保存呢?

今天就分享给大家一个python获取文档数据得方法

环境使用:

  • python 3.8

  • pycharm

模块使用:

  • requests >>> 数据请求模块 pip install requests

  • docx >>> 文档保存 pip install python-docx

  • re 内置模块 不需要安装

ctrl + R : 首先你得看得数据, 才能想办法获取

安装python第三方模块:

  1. win + R 输入 cmd 点击确定, 输入安装命令 pip install 模块名 (pip install requests) 回车

  2. 在pycharm中点击Terminal(终端) 输入安装命令

基本思路流程:

一. 分析数据来源

找 文档数据内容, 是在那个url里面生成的

  • 通过开发者工具进行抓包分析

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

    2. 刷新网页: 让本网页数据内容重新加载一遍

    如果你是非VIP账号, 看数据, 图片形式 —> 把数据<图片> 获取下来 —> 做文字识别

    1. 分析文库数据内容, 图片所在地址
  1. 获取所有图片内容: 文库数据 --> 图片形式 —> 所有图片内容保存下载

  2. 文字识别, 把图片文字识别出来, 保存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接口做文字识别

“”"

def get_content(file):
    # client_id 为官网获取的AK, client_secret 为官网获取的SK
    host = 'https://aip.****.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.****.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')
link = 'https://wenku.****.com/aggs/74d1a923482fb4daa58d4b8e?index=0&_wkts_=1670327737660&bdQuery=%E7%AD%94%E9%A2%98'
# 请求头
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

“”"

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

    • 长链接, 可以分段写

      问号前面: url链接

      问号后面: 请求参数/查询参数

“”"

    # 确定请求链接
    url = 'https://wenku.****.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)

“”"

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

开发者工具: response

response.json() 获取响应json字典数据, 但是返回数据必须是完整json数据格式 花括号 {}

response.text 获取响应文本数据, 返回字符串 任何时候都可以, 但是基本获取网页源代码的时候

response.content 获取响应二进制数据, 返回字节 保存图片/音频/视频/特定格式文件

print(response.json()) 打印字典数据, 呈现一行

pprint(response.json()) 打印字典数据, 呈现多行, 展开效果

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

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

“”"

    # 定义文件名 整型
    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

尾语

要成功,先发疯,下定决心往前冲!

学习是需要长期坚持的,一步一个脚印地走向未来!

未来的你一定会感谢今天学习的你。

—— 心灵鸡汤

本文章到这里就结束啦~感兴趣的小伙伴可以复制代码去试试哦 😝

请添加图片描述

👇问题解答 · 源码获取 · 技术交流 · 抱团学习请联系👇

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

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

相关文章

DolphinScheduler 发布 3.0.3 版本,重点修复 6 个 Bug

点亮 ⭐️ Star 照亮开源之路https://github.com/apache/dolphinscheduler近日&#xff0c;Apache DolphinScheduler 发布了 3.0.3 版本。此版本主要基于 3.0.2 版本进行了 Bug 修复&#xff0c;共计修复 6 个 Bug&#xff0c;以及 3 处文档修改。其中的较为重要的 Bug fix 为…

外汇天眼:WTI原油自低位累计反弹9%!欧佩克呼吁“警惕和谨慎”

美国CPI增速创近一年来新低&#xff0c;美元指数失守104.0 周三&#xff08;12月13日&#xff09;公布的美国11月CPI同比增长7.1%&#xff0c;不及预期增长7.3%&#xff0c;前值7.7%&#xff1b;美国11月CPI环比增长0.1%&#xff0c;不及预期增长0.3%&#xff0c;前值0.4%。 从…

专访AliceBob的CEO兼联合创始人:深入探知猫态量子比特

&#xff08;图片来源&#xff1a;网络&#xff09; Alice&Bob公司是一家使用cat量子比特制造容错量子计算机的公司。近日&#xff0c;Alice&Bob的CEO兼联合创始人Thau Peronnin&#xff08;以下简称T&#xff09;接受了记者Yuval Boger&#xff08;以下简称Y&#xff…

Java#37(反射)

目录 一.反射的作用和关键 二. 反射获取对象 1.反射获取类对象 2.反射获取构造器对象 3.反射获取成员变量对象 4. 反射获取方法对象 5.用反射绕过编译阶段为集合添加数据 反射做通用框架 一.反射的作用和关键 作用: 反射是在运行时获取类的字节码文件对象: 然后可以解…

未能加载文件或程序集XXX.dll,程序启动失败的解决方案

之前在VS2019上下载一个项目&#xff0c;运行后就报错&#xff0c;弹出 出错&#xff1a;未能加载文件或程序集XXX.dll 我们选中该dll&#xff0c;右键&#xff0c;属性&#xff0c;发现 该dll被锁定 点击“解决锁定”即可解决。 为了一劳永逸解决此问题&#xff0c;后到微软…

【头歌C语言程序与设计】结构体共用体枚举类型

目录 写在前面 正文 第1关&#xff1a;结构体 第2关&#xff1a;共用体 第3关&#xff1a;枚举类型 写在最后 写在前面 本文代码是我自己所作&#xff0c;本人水平有限&#xff0c;可能部分代码看着不够简练&#xff0c;运行效率不高,但都能运行成功。另外&#xff0c;如…

C++ 智能指针

目录 为什么需要智能指针&#xff1f; RAII 智能指针的原理 C智能指针的历史 智能指针 auto_ptr unique_ptr shared_ptr shared_ptr 引用计数解决智能指针拷贝问题 shared_ptr 循环引用问题 智能指针删除器 weak_ptr 为什么需要智能指针&#xff1f; 1. 我们在很多…

基于 SSM 的 CRM 客户管理系统

1&#xff1a;通过点击【登录】按钮&#xff0c;获取登录的接口地址 2&#xff1a;在UserLoginController类中&#xff0c;增加登录接口 3&#xff1a;首先判断用户名是否存在&#xff0c;其次判断匹配是否匹配 4&#xff1a;处理session问题 代码如下&#xff1a; UserLo…

java计算机毕业设计ssm智能会议室管理系统0v396(附源码、数据库)

java计算机毕业设计ssm智能会议室管理系统0v396&#xff08;附源码、数据库&#xff09; 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xf…

TAPD新增需求自动通知飞书

【实现效果&#xff1a;】TAPD新增需求/缺陷&#xff0c;可以自动通知飞书机器人并通知相关人员&#xff0c;让相关人员可以及时关注到新增需求/缺陷并及时处理。 【流程配置】 第一步&#xff1a;打开腾讯云HiFlow模版中心&#xff0c;搜索打开“TAPD需求/项目更新实时通知飞…

C# !(null包容)运算符的使用

总目录 文章目录总目录前言一、!(null包容&#xff09;运算符是什么&#xff1f;二、!(null包容&#xff09;运算符如何使用&#xff1f;1.使用2.扩展-预处理器指令启用或关闭null检查总结前言 本文主要讲解&#xff01;&#xff08;null包容&#xff09;运算符的使用&#xf…

艾美捷科研专用西妥昔单抗Cetuximab相关介绍

西妥昔单抗&#xff08;Cetuximab&#xff09;&#xff0c;商品名尔必得舒&#xff08;Erbitux&#xff09;&#xff0c;是美商英克隆公司和美商百时美施贵宝的专-利药。西妥昔单抗是一种对抗表皮生长因子受体&#xff08;EGFR&#xff09;的单克隆抗体&#xff0c;经美国食品药…

MySQL表的增删查改(下)

作者&#xff1a;~小明学编程 文章专栏&#xff1a;MySQL 格言&#xff1a;目之所及皆为回忆&#xff0c;心之所想皆为过往 今天给大家分享的是增删查改中的一些比较核心的东西同时也是难点&#xff0c;希望能给大家带来一些帮助吧。 目录 数据库的约束 NULL约束 Unique的…

数据结构C语言版 —— 顺序表增删改查实现

文章目录顺序表1. 线性表2. 顺序表3. 顺序表基本概念4. 顺序表实现顺序表初始化顺序表的扩容顺序表的插入顺序表的删除顺序表的查找顺序表的修改顺序表的销毁5. 顺序表总结顺序表 1. 线性表 线性表&#xff1a;线性表是由n个具有相同特性的数据元素组成的序列。线性表是一种在…

【DevOps】总结下容器方式构建Grafana-reporter生成PDF格式报告

目录 Grafana-reporter1、编写Dockerfile2、构建镜像3、运行Grafana-reporter4、在Grafana配置Link即文章:【DevOps】Prometheus+Grafana:生成pdf报表总结下Grafana-reporter镜像打包过程 最终pdf实现效果类似: Grafana-reporter 简介:“A simple http service that gen…

[附源码]Python计算机毕业设计仿咸鱼二手物品交易系统Django(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等…

TCP/IP 网络原理【TCP篇】

&#x1f389;&#x1f389;&#x1f389;写在前面&#xff1a; 博主主页&#xff1a;&#x1f339;&#x1f339;&#x1f339;戳一戳&#xff0c;欢迎大佬指点&#xff01; 目标梦想&#xff1a;进大厂&#xff0c;立志成为一个牛掰的Java程序猿&#xff0c;虽然现在还是一个…

joinquant量化是什么?是主流的量化平台吗?

joinquant量化是什么&#xff1f;我们做量化投资的时候&#xff0c;目前比较流行的平台&#xff0c;我推荐的是这三个&#xff0c;一个是Ricequant&#xff0c;另外一个是JoinQuant&#xff0c;还有一个QUANTOPIAN&#xff0c;国内实际上就是优矿。这几个现在比较流行&#xff…

git分支管理

分支管理&#xff08;拙见&#xff09; 1&#xff0c;首先master分支是最高级别分支。不可编辑 2&#xff0c;创建一个release分支&#xff0c;从master上拉取&#xff0c;用于上线分支 3&#xff0c;创建dev开发分支&#xff0c;从relase分支拉取&#xff0c;如果有开发环境…

裸辞美团花两月吃透这 Java 岗 798 道真题解析,定级阿里 P7

2023 的面试即将到来&#xff0c;大家准备的怎么样了呢&#xff1f;你有没有正在为此而发愁呢&#xff1f;那么一起来看看小编整理的这富含的 15 个互联网大厂 Java 高级工程师核心面试问题整理吧&#xff01;已助我在 2023 年的金三银四跳槽季中拿到阿里 P7. 内容包括&#x…