哈喽兄弟们

我们平常需要下载文档的时候,是不是发现,要么不能下载,要么不能复制,就能难受。

常见的文档网站很多,但是这里就不一一说名字了,emmm

那么我们今天来分享一下,如何用Python将这些不给下载的文档给批量下载下来。

你需要准备

开发环境

python 3.8

pycharm

 

模块使用

两个需要安装的第三方模块,安装命令也写出来了。

requests --> pip install requests

re

base64

docx --> pip install python-docx

 

本文实现思路

一、数据来源分析

明确需求明确采集网址以及数据内容是什么?网址: https://www.docin.com/p-3282300896.html数据: 文档内容

抓包分析, 我们需要数据内容是可以请求那个链接能够得到文档形式: 图片样式通过浏览器自带工具: 开发者工具抓包打开开发者工具: F12 / 右键点击检查选择network刷新网页开发者工具搜索: docinpic文档图片数据链接: http://221.122.117.73/docinpic.jspsid: P1ekRarOT5ID*deCCfQPHapgA9Z5X3NNn0xfBxPIDApUnSY9yIVtfuxey1BsO1BG <获取>file: 文档ID <可以自己获取>width: 图片分辨率pageno: 页码 <可以用for循环>

二、代码实现步骤

发送请求, 模拟浏览器对于 文档页面url地址 发送请求请求链接: https://www.docin.com/p-3282300896.html

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

解析数据, 提取我们需要的内容:sid参数 / 文档页数 / 文档名称构建文档图片链接

保存数据, 把文档图片内容保存下来

通过文字识别, 把图片里面文字识别出来, 保存文档里面就可以了

会使用百度云API接口:1. 注册登陆百度云API2. 选择文字识别, 创建应用, 领取免费资源, 点击技术文档3. 先获取token值4. API调用的文档代码

代码展示

文字识别

doc = Document()

def Content(content):

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

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

# 二进制方式打开图片文件

# 完整源码和视频讲解都打包好

# 放在这个Q裙了:708525271

# f = open('img\\1 计算机概述1.jpg', 'rb')

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)

 

发送请求

# 模拟浏览器 --> 字典数据类型 --> 键:值

headers = {

# User-Agent 用户代理 表示浏览器基本身份信息

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

}

# 请求链接

url = 'https://www.docin.com/p-3282300896.html'

# 发送请求

response = requests.get(url=url, headers=headers)

 

获取数据、解析数据

# 获取网页数据

html_data = response.text

# 提取sid参数

sid = re.findall('flash_param_hzq:"(.*?)",', html_data)[0]

# 提取名字

name = re.findall('productName:"(.*?)",', html_data)[0]

# 提取页码

num = re.findall('(\d+)页', html_data)[0]

# 构建完整图片链接

content_list = []

for page in range(1, int(num)+1):

# 字符串格式化方法

img = f'http://221.122.117.73/docinpic.jsp?sid={sid}&file=3282300896&width=942&pageno={page}'

 

保存数据, 把文档图片内容保存下来

# 发送请求, 获取二进制数据<图片内容>

img_content = requests.get(url=img, headers=headers).content

words = Content(img_content)

doc.add_paragraph(words)

 

完整代码+视频步骤详解全部都打包好了,文末名片自己拿哦!

好了,今天的分享就到这结束了,下次见!

查看原文