前言

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

Python如何免费获取付费文档的数据, 保存word文档-LMLPHP

开发环境:

  • python 3.8

  • pycharm

模块使用:

  • requests --> pip install requests

  • re

  • json

  • time

  • base64

  • docx --> pip install python-docx

第三方模块安装:

win + R 输入cmd 输入安装命令 pip install 模块名 (如果你觉得安装速度比较慢, 你可以切换国内镜像源)

代码实现步骤:

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

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

  3. 解析数据, 提取我们需要的内容 --> 图片链接

  4. 保存数据, 把图片内容保存

  5. 文字识别, 提取文字内容

  6. 文字写入word文档

代码展示

# 导入数据请求模块
import requests
# 导入正则表达式
import re
# 导入json
import json
# 导入时间模块
import time
import base64
import docx
"""
文字识别:
    百度云API接口 --> 免费领取资源的
    1. 注册登陆
    2. 选择文字识别
    3. 创建应用 领取资源
    4. 进入API文档
        - 获取token
        - 复制API代码
"""
doc = docx.Document()


def Content(content):
    """
    :param content: 图片二进制数据
    :return:
    """
    url = "https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=xxxx&client_secret=xxxx"
    payload = ""
    headers = {
        'Content-Type': 'application/json',
        'Accept': 'application/json'
    }
    response = requests.request("POST", url, headers=headers, data=payload)
    access_token = response.json()['access_token']
    print(access_token)
    '''
    通用文字识别(高精度版)
    '''
    request_url = "https://aip.baidubce.com/rest/2.0/ocr/v1/accurate_basic"
    img = base64.b64encode(content)
    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_result = '\n'.join([i['words'] for i in json_data['words_result']])
    print(words_result)
    return words_result




"""
1. 发送请求, 模拟浏览器对于url地址发送请求
"""
# 模拟浏览器 --> 请求头, 直接复制
headers = {
    # 完整源码、解答、教程皆+VX:Python5180 记得验证备注AAA
    'Cookie': 'CLIENT_SYS_UN_ID=3rvhLGQlZ5CsGW2eHpmuAg==; __yjs_duid=1_0ce66bf3ca7c2306ce5da72ade1b4ba11685945826433; s_v=cdh%3D%3E27a30245%7C%7C%7Cvid%3D%3E1685945827928042385%7C%7C%7Cfsts%3D%3E1685945827%7C%7C%7Cdsfs%3D%3E25%7C%7C%7Cnps%3D%3E2; s_rfd=cdh%3D%3E27a30245%7C%7C%7Ctrd%3D%3Emax.book118.com%7C%7C%7Cftrd%3D%3Ebook118.com; s_s=cdh%3D%3E27a30245%7C%7C%7Clast_req%3D%3E1688127125%7C%7C%7Csid%3D%3E1688124093504555434%7C%7C%7Cdsps%3D%3E25',
    'Host': 'openapi.book118.com',
    'Pragma': 'no-cache',
    'Referer': 'https://*****/',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36',
}
for page in range(1, 14, 6):
    time.sleep(2)
    # 请求链接
    url = 'https://openapi.book118.com/getPreview.html'
    # 请求参数 --> 缩进 tab 取消缩进 shift+tab 复制当前行crtl + D
    data = {
        'project_id': '1',
        'aid': '569535184',
        't': '8684559560dd49bd42aeb2e85b6d6f06',
        'view_token': 'qKyQHm9Lw@hAGeaC16lOgvTEUQeFscw1',
        'page': page,
        'filetype': 'docx',
        # 'callback': 'jQuery183015452790725275278_1688127062003',
        '_': '1688127520232',
    }
    # 发送请求
    response = requests.get(url, params=data, headers=headers)
    """
    2. 获取数据, 获取服务器返回响应数据
        response.text 获取响应的文本数据
    3. 解析数据, 提取我们需要的内容 --> 图片链接
        re.findall('数据', '地方') 找到所有数据
            从什么地方, 去匹配找寻什么数据
        re.findall('jsonpReturn\((.*?)\)', response.text)
        \ 转义字符, 把含有特殊意义字符,转义成本身以外, 不含有其他特殊意义
        () 精确匹配
        .*? --> 可以匹配任意字符串 除了\n换行符
        正则匹配的数据, 返回列表

    """
    html_data = re.findall('jsonpReturn\((.*?)\)', response.text)[0]
    # 转成字典数据
    json_data = json.loads(html_data)
    for link in json_data['data'].values():
        link = 'https:' + link
        # 有时候加伪装可能还不到数据 <请求头参数加多了>
        img = requests.get(link).content
        words = Content(img).replace('原创力文档', '').replace('max.book118.com', '').replace('下载高清无水印', '')
        print(words)
        # 写入内容
        doc.add_paragraph(words)

doc.save('大学生电子商务实习报告.docx')

尾语

感谢你观看我的文章呐~本次航班到这里就结束啦 🛬

希望本篇文章有对你带来帮助 🎉,有学习到一点知识~

躲起来的星星🍥也在努力发光,你也要努力加油(让我们一起努力叭)。

Python如何免费获取付费文档的数据, 保存word文档-LMLPHP

最后,宣传一下呀~👇👇👇更多源码、资料、素材、解答、交流皆点击下方名片获取呀👇👇

07-02 19:15