前言
大家早好、午好、晚好吖 ❤ ~欢迎光临本文章
如果有什么疑惑/资料需要的可以点击文章末尾名片领取源码
开发环境:
-
版 本: python 3.8
-
编辑器:pycharm 2022.3.2
模块使用:
-
requests --> pip install requests
-
re
-
base64
-
docx --> pip install python-docx
第三方模块安装:
win + R 输入cmd 输入安装命令 pip install 模块名
(如果你觉得安装速度比较慢, 你可以切换国内镜像源)
爬虫流程思路:
一. 数据来源分析
-
明确需求: 明确采集的网站以及数据内容
-
网址: https://max.book118.com/html/2021/0519/8055055075003102.shtm?vip_view=search
-
数据: 文档数据内容
文档内容, 存在方式基本上图片的形式…
-
-
抓包分析
-
打开开发者工具: F12
-
刷新网页
-
点击查看图片数据 Img
https://view-cache.book118.com/view19/M03/2F/33/wKh2D2ClvVuAKwlSAADEX_8Jeug078.png
-
通过关键字搜索, 找到所有文档内容所对应数据包位置
关键字: 图片链接中一段参数 wKh2D2ClvVuAKwlSAADEX_8Jeug078 后缀前面那段参数
数据包: https://openapi.book118.com/getPreview.html 包含所有图片数据内容
-
二. 代码实现步骤
-
发送请求: 模拟浏览器对于url地址发送请求
-
获取数据
-
解析数据
-
保存数据
代码展示
'''
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'
}
- 发送请求
response = requests.get(url=url, params=data, headers=headers)
- 获取响应文本数据, 正则匹配数据
'''
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')
尾语
好了,今天的分享就差不多到这里了!
对下一篇大家想看什么,可在评论区留言哦!看到我会更新哒(ง •_•)ง
喜欢就关注一下博主,或点赞收藏评论一下我的文章叭!!!