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')

尾语

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

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

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

vue中的动画组件使用及如何在vue中使用animate.css

“< Transition >” 是一个内置组件&#xff0c;这意味着它在任意别的组件中都可以被使用&#xff0c;无需注册。它可以将进入和离开动画应用到通过默认插槽传递给它的元素或组件上。进入或离开可以由以下的条件之一触发&#xff1a; 由 v-if 所触发的切换由 v-show 所触…

K8S部署nginx并且使用NFS存储数据

安装NFS 在master安装NFS systemctl start nfs-server修改配置 /etc/exports /data *(rw,no_root_squash,no_all_squash,sync)目录为 /data 允许所有地址访问 验证下 [rootmaster nginx]# showmount -e 192.168.57.61 Export list for 192.168.57.61: /data *共享可以正常…

我不是DBA之慢SQL诊断方式

最近经常遇到技术开发跑来问我慢SQL优化相关工作&#xff0c;所以干脆出几篇SQL相关优化技术月报&#xff0c;我这里就以公司mysql一致的5.7版本来说明下。 在企业中慢SQL问题进场会遇到&#xff0c;尤其像我们这种ERP行业。 成熟的公司企业都会有晚上的慢SQL监控和预警机制。…

手动创建spring bean并注入

文章目录 前言一、jar包中,相同class不同类加载器加载的时候是同一个class嘛&#xff1f;二、利用ConfigurableListableBeanFactory手动注册bean注册bean,并自动注入依赖bean根据类型获取注入的bean,两个bean是一个吗? 三、同一份字节码,class隔离,bean隔离总结 前言 注入一个…

2952. 需要添加的硬币的最小数量(结论题)

力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 分析知&#xff1a;设指针值从1开始依次递增&#xff0c;每次将coins里的值累加起来看能否得到或者大于当前指针值 &#xff0c;否则就将该指针值累加起来&#xff0c;即需要添加的数 class Solution …

JOSEF 单相电压继电器 WY-31A1 DC220V 过压动作,导轨安装

系列型号 单相 JY-45A1电压继电器&#xff1b;JY-45B1电压继电器&#xff1b; JY-45C1电压继电器&#xff1b;JY-45D1电压继电器&#xff1b; JY-41A1电压继电器&#xff1b;JY-41B1电压继电器&#xff1b; JY-41C1电压继电器&#xff1b;JY-41D1电压继电器&#xff1b; …

冬天来了,波司登的高端化“春天”不远了?

最近&#xff0c;羽绒服频繁“贵”上热搜。 在众多热搜词条中&#xff0c;一条“国产羽绒服卖到7000元”的话题一度将波司登推上了舆论的风口浪尖。 对此&#xff0c;波司登在最新的业绩说明会上进行了回应&#xff0c;公司表示&#xff1a;“波司登旗下主品牌及子品牌将形成差…

学习数分--简单案例1

业务背景&#xff1a;某服务类app&#xff0c;近期发现日新增用户数下滑明显。 具体描述&#xff1a;假设公司产品&#xff08;一款本地服务类app&#xff09;&#xff0c;近期发现日新增用户数下滑明显。老板要求你分析&#xff1a;数据异动的原因是什么&#xff1f; #最开始…

揭秘DeepMind、OpenAI成立内幕,马斯克、奥特曼、佩奇、哈萨比斯的爱恨情仇......

前些天OpenAI内斗的政权之争&#xff0c;相信各位看官在吃瓜的同时会感到大为震撼。OpenAI这次“政变”事件&#xff0c;让世人第一次看到那些将决定人工智能发展未来的科技大佬之间的激烈争斗。 但权利的斗争在硅谷AI激荡发展十余年中绝不是第一次。《纽约时报》为此采访了80…

VBA技术资料MF92:将多个Excel表插入Word文档的不同位置

我给VBA的定义&#xff1a;VBA是个人小型自动化处理的有效工具。利用好了&#xff0c;可以大大提高自己的工作效率&#xff0c;而且可以提高数据的准确度。我的教程一共九套&#xff0c;分为初级、中级、高级三大部分。是对VBA的系统讲解&#xff0c;从简单的入门&#xff0c;到…

Hadoop学习笔记(HDP)-Part.12 安装HDFS

目录 Part.01 关于HDP Part.02 核心组件原理 Part.03 资源规划 Part.04 基础环境配置 Part.05 Yum源配置 Part.06 安装OracleJDK Part.07 安装MySQL Part.08 部署Ambari集群 Part.09 安装OpenLDAP Part.10 创建集群 Part.11 安装Kerberos Part.12 安装HDFS Part.13 安装Ranger …

MATLAB|学习小提示

Part1一些小小小提示 1遇到问题怎么办 不要怕提问&#xff0c;谁都是新手过来的&#xff0c;matlab程序我是自学的从来也没人教过我&#xff0c;我不懂就百度解决的&#xff0c;作为初学者&#xff0c;你遇到的问题&#xff0c;其他人也大多遇到过&#xff0c;绝大多数百度可以…

avamar DD组合的备份故障

证书过期导致的失败 先是显示DD页面崩了 Avamar DD 集成 — DD 在 Avamar AUI/GUI 中显示红色解决方案路径 | Dell 中国 排查了一番 尝试了重启DD 然而并没用 然后尝试更新证书 页面确实起来了 但是证书还是更新失败 确定原因还是因为版本太低而宣告失败 证书更新失败 …

Flannel源码解析

Flannel源码解析 项目地址: https://github.com/flannel-io/flannel 更多文章访问 https://www.cyisme.top flannel中有三种工作模式: udp。 性能最低&#xff0c;利用tun/tap设备&#xff0c;通过udp封装ip包。中间需要经过多次内核态和用户态的切换。vxlan。 性能中等&…

判断一个链表是否为回文结构

&#x1f4d1;打牌 &#xff1a; da pai ge的个人主页 &#x1f324;️个人专栏 &#xff1a; da pai ge的博客专栏 ☁️宝剑锋从磨砺出&#xff0c;梅花香自苦寒来 &#x1f324;️题目结构 给定一个…

Python技术操作1-高效办公:将文本、图片和表格信息批量写入Word文档

大家好&#xff0c;我是微学AI&#xff0c;今天给大家介绍一下Python技术操作1-高效办公:将文本、图片和表格信息批量写入Word文档。在现代办公、教育、科研等多个领域都有广泛的应用场景。本文列举一些具体的应用场景&#xff0c;并简要说明其中的原理&#xff0c;并介绍实现的…

C++入门第十一篇----多态

前言&#xff1a; 和前面的继承一样&#xff0c;多态也是对类和对象的功能进行扩展&#xff0c;以让其更加好用的一个知识点&#xff0c;接下来&#xff0c;就让我们总结一下多态&#xff0c;这个依托了继承的一个重要知识点。 对多态的理解和多态的概念&#xff1a; 何为多…

基于go文件同步工具的升级迭代

介绍 同样&#xff0c;该工具适用于多个项目不同版本的维护&#xff0c;文件更新和新增的同步(自动创建目录)&#xff0c;支持自动提交svn。 升级迭代 之前的文件同步工具&#xff0c;依赖chrome和http包&#xff0c;有时候js加载页面不太稳定&#xff0c;所以有空闲就升级迭…

Cannot find module ‘node:url‘报错处理

在运行vite搭建的项目时&#xff0c;遇到Cannot find module node:url’报错。具体错误如图所示&#xff1a; 造成以上问题的原因是node版本较低。Vite 需要 Node.js 版本 14.18&#xff0c;16。 解决方案&#xff1a; 上面是通过nvm切换高版本node。 再次执行运行命令&…

一个完整的转录组分析流程

本期的教程代码&#xff08;部分&#xff09; #!/bin/bash # # 使用fastq-dump解压sra数据 # 本数据集为双端数据 # 解压格式为fq.gz for i in SRR6929571 SRR6929572 SRR6929573 SRR6929574 SRR6929577 SRR6929578; do pfastq-dump --split-files --threads 20 --gzip -s 00_…