翼度科技»论坛 编程开发 python 查看内容

Python采集网站VIP文档,实现图片文字识别,并保存word格式!

6

主题

6

帖子

18

积分

新手上路

Rank: 1

积分
18
哈喽兄弟们
我们平常需要下载文档的时候,是不是发现,要么不能下载,要么不能复制,就能难受。
常见的文档网站很多,但是这里就不一一说名字了,emmm
那么我们今天来分享一下,如何用Python将这些不给下载的文档给批量下载下来。
你需要准备
开发环境
  1. python 3.8
  2. pycharm
复制代码
 
模块使用
两个需要安装的第三方模块,安装命令也写出来了。
  1. requests --> pip install requests
  2. re
  3. base64
  4. docx --> pip install python-docx
复制代码
 
本文实现思路
一、数据来源分析

  • 明确需求
    明确采集网址以及数据内容是什么?
    网址: https://www.docin.com/p-3282300896.html
    数据: 文档内容
  • 抓包分析, 我们需要数据内容是可以请求那个链接能够得到
    文档形式: 图片样式
    通过浏览器自带工具: 开发者工具抓包
    打开开发者工具: F12 / 右键点击检查选择network
    刷新网页
    开发者工具搜索: docinpic
    文档图片数据
    链接: http://221.122.117.73/docinpic.jsp
    sid: P1ekRarOT5ID*deCCfQPHapgA9Z5X3NNn0xfBxPIDApUnSY9yIVtfuxey1BsO1BG
    file: 文档ID
    width: 图片分辨率
    pageno: 页码
二、代码实现步骤

  • 发送请求, 模拟浏览器对于 文档页面url地址 发送请求
    请求链接: https://www.docin.com/p-3282300896.html
  • 获取数据, 获取服务器返回响应数据
  • 解析数据, 提取我们需要的内容:
    sid参数 / 文档页数 / 文档名称
    构建文档图片链接
  • 保存数据, 把文档图片内容保存下来
通过文字识别, 把图片里面文字识别出来, 保存文档里面就可以了
会使用百度云API接口:
1. 注册登陆百度云API
2. 选择文字识别, 创建应用, 领取免费资源, 点击技术文档
3. 先获取token值
4. API调用的文档代码
代码展示
文字识别
  1. doc = Document()
  2. def Content(content):
  3.     url = "https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=xxxx&client_secret=xxxx"
  4.     payload = ""
  5.     headers = {
  6.         'Content-Type': 'application/json',
  7.         'Accept': 'application/json'
  8.     }
  9.     response = requests.request("POST", url, headers=headers, data=payload)
  10.     access_token = response.json()['access_token']
  11.     request_url = "https://aip.baidubce.com/rest/2.0/ocr/v1/accurate_basic"
  12.     # 二进制方式打开图片文件
  13.     # 完整源码和视频讲解都打包好
  14.     # 放在这个Q裙了:708525271
  15.     # f = open('img\\1 计算机概述1.jpg', 'rb')
  16.     img = base64.b64encode(content)
  17.     params = {"image":img}
  18.     request_url = request_url + "?access_token=" + access_token
  19.     headers = {'content-type': 'application/x-www-form-urlencoded'}
  20.     json_data = requests.post(request_url, data=params, headers=headers).json()
  21.     words_result = '\n'.join([i['words'] for i in json_data['words_result']])
  22.     print(words_result)
复制代码
 
发送请求
  1. # 模拟浏览器 --> 字典数据类型 --> 键:值
  2. headers = {
  3.     # User-Agent 用户代理 表示浏览器基本身份信息
  4.     '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'
  5. }
  6. # 请求链接
  7. url = 'https://www.docin.com/p-3282300896.html'
  8. # 发送请求
  9. response = requests.get(url=url, headers=headers)
复制代码
 
获取数据、解析数据
  1. # 获取网页数据
  2. html_data = response.text
  3. # 提取sid参数
  4. sid = re.findall('flash_param_hzq:"(.*?)",', html_data)[0]
  5. # 提取名字
  6. name = re.findall('productName:"(.*?)",', html_data)[0]
  7. # 提取页码
  8. num = re.findall('<em>(\d+)</em>页</span>', html_data)[0]
  9. # 构建完整图片链接
  10. content_list = []
  11. for page in range(1, int(num)+1):
  12.     # 字符串格式化方法
  13.     img = f'http://221.122.117.73/docinpic.jsp?sid={sid}&file=3282300896&width=942&pageno={page}'
复制代码
 
保存数据, 把文档图片内容保存下来
  1. # 发送请求, 获取二进制数据<图片内容>
  2. img_content = requests.get(url=img, headers=headers).content
  3. words = Content(img_content)
  4. doc.add_paragraph(words)
复制代码
 
完整代码+视频步骤详解全部都打包好了,文末名片自己拿哦!
好了,今天的分享就到这结束了,下次见!

来源:https://www.cnblogs.com/hahaa/p/17545294.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

举报 回复 使用道具