前言

是谁在baidu上搜资料看知识点,看到三分之一或者一半的时候,就需要花的啥才能看啊

今天就来教你们如何用Python搞定这些,让你想看啥就看啥

前期准备

环境使用

  • 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接口做文字识别
def get_content(file):
    # client_id 为官网获取的AK, client_secret 为官网获取的SK
    host = '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_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)

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

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

最后

刚开始接触Python的宝子,有什么不懂的都可以私信我哦