Python采集豆丁网站文档数据内容, 保存word文档

前言

大家早好、午好、晚好吖 ❤ ~欢迎光临本文章

如果有什么疑惑/资料需要的可以点击文章末尾名片领取源码

开发环境:

  • 版 本: python 3.8

  • 编辑器:pycharm 2022.3.2

模块使用:

  • requests --> pip install requests

  • re

  • base64

  • docx --> pip install python-docx

第三方模块安装:

win + R 输入cmd 输入安装命令 pip install 模块名

(如果你觉得安装速度比较慢, 你可以切换国内镜像源)

爬虫流程思路:

一. 数据来源分析
  1. 明确需求: 明确采集的网站以及数据内容

    • 网址: https://max.book118.com/html/2021/0519/8055055075003102.shtm?vip_view=search

    • 数据: 文档数据内容

      文档内容, 存在方式基本上图片的形式…

  2. 抓包分析

    • 打开开发者工具: F12

    • 刷新网页

    • 点击查看图片数据 Img

      https://view-cache.book118.com/view19/M03/2F/33/wKh2D2ClvVuAKwlSAADEX_8Jeug078.png

    • 通过关键字搜索, 找到所有文档内容所对应数据包位置

      关键字: 图片链接中一段参数 wKh2D2ClvVuAKwlSAADEX_8Jeug078 后缀前面那段参数
      数据包: https://openapi.book118.com/getPreview.html 包含所有图片数据内容

二. 代码实现步骤
  1. 发送请求: 模拟浏览器对于url地址发送请求

  2. 获取数据

  3. 解析数据

  4. 保存数据

代码展示

'''
python资料获取看这里噢!! 小编 V:qian97378,即可获取:
文章源码/教程/资料/解答等福利,还有不错的视频学习教程和PDF电子书!
'''
# 导入数据请求模块
import requests
# 导入正则表达式模块
import re
# 导入json
import json
# 导入时间模块
import time
import base64
from docx import Document

“”"
文字识别:
1. 登陆百度云
2. 创建应用 领取资源
3. 点击技术文档
- 获取token值 <代码现成>
- 使用API接口识别文字内容 <代码现成>
“”"

def main(img_content):
    url = "https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=xxxx&client_secret=xxxx"
    headers = {
        'Content-Type': 'application/json',
        'Accept': 'application/json'
    }
    response = requests.request("POST", url, headers=headers)
    access_token = response.json()['access_token']
    print(access_token)

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

    request_url = "https://aip.baidubce.com/rest/2.0/ocr/v1/accurate_basic"

二进制方式打开图片文件 传入二进制图片数据

'''
python资料获取看这里噢!! 小编 V:qian97378,即可获取:
文章源码/教程/资料/解答等福利,还有不错的视频学习教程和PDF电子书!
'''
    img = base64.b64encode(img_content)
    params = {"image": img}
    request_url = request_url + "?access_token=" + access_token
    headers = {'content-type': 'application/x-www-form-urlencoded'}
    response_json = requests.post(request_url, data=params, headers=headers).json()
    words_result = '\n'.join([i['words'] for i in response_json['words_result']]).replace('原创力文档', '').replace('max.book118.com', '').replace('下载高清无水印', '')
    print(words_result)
    return words_result


doc = Document()

保存文档中

for page in range(1, 21, 6):

延时

    time.sleep(2)
    print(page)

请求链接 -> 复制开发者工具 请求网址

    url = 'https://openapi.book118.com/getPreview.html'

请求参数 -> 复制开发者工具 载荷

'''
python资料获取看这里噢!! 小编 V:qian97378,即可获取:
文章源码/教程/资料/解答等福利,还有不错的视频学习教程和PDF电子书!
'''
    data = {
        'project_id': '1',
        'aid': '300802928',
        't': '14b82bebac064a1ab0f7787227f39103',
        'view_token': 'WxkjakMHjCp171nCrqPbImkvoeN5_Ei9',
        'page': page,
        # 'callback': 'jQuery18307259700083682896_1697113460929',
        '_': '1697113461130',
    }

模拟浏览器 -> 复制开发者工具 请求头

    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36'
    }
  1. 发送请求
    response = requests.get(url=url, params=data, headers=headers)
  1. 获取响应文本数据, 正则匹配数据
'''
python资料获取看这里噢!! 小编 V:qian97378,即可获取:
文章源码/教程/资料/解答等福利,还有不错的视频学习教程和PDF电子书!
'''
    html_data = re.findall('jsonpReturn\((.*?)\);', response.text)[0]
    # json字符串数据, 转成json字典数据
    json_data = json.loads(html_data)
    # 键值对取值 字典键值对 key:value
    for img in json_data['data'].values():
        # https://view-cache.book118.com/view11/M00/2B/31/wKh2C19zQOuAZq11AACGj3HswGE408.png
        img_url = 'https:' + img
        # 获取图片的二进制数据
        img_content = requests.get(url=img_url, headers=headers).content
        # 识别图片里面的文字内容
        print(img_url)
        words_result = main(img_content=img_content)
        # 写入文档数据
        doc.add_paragraph(words_result)


doc.save('脑筋急转弯.docx')

尾语

好了,今天的分享就差不多到这里了!

对下一篇大家想看什么,可在评论区留言哦!看到我会更新哒(ง •_•)ง

喜欢就关注一下博主,或点赞收藏评论一下我的文章叭!!!

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

你可能感兴趣的:(爬虫小案例,python,word,开发语言,pycharm,学习,爬虫)