Python實現復制文檔數據
前言
我們百度搜索一些東西得時候,經常找到文檔裡面
然後就會發現需要充值才能復制!怎麼可以不花錢也保存呢?
今天就分享給大傢一個python獲取文檔數據得方法
環境使用
python 3.8
pycharm
模塊使用
requests >>> 數據請求模塊 pip install requests
docx >>> 文檔保存 pip install python-docx
re 內置模塊 不需要安裝
ctrl + R : 首先你得看得數據, 才能想辦法獲取
安裝python第三方模塊
win + R 輸入 cmd 點擊確定, 輸入安裝命令 pip install 模塊名 (pip install requests) 回車
在pycharm中點擊Terminal(終端) 輸入安裝命令
基本思路流程
一. 分析數據來源
找文檔數據內容, 是在那個url裡面生成的
通過開發者工具進行抓包分析
1.打開開發者工具: F12 / 鼠標右鍵點擊檢查選擇network
2.刷新網頁: 讓本網頁數據內容重新加載一遍
如果你是非VIP賬號, 看數據, 圖片形式 —> 把數據<圖片> 獲取下來 —> 做文字識別
3.分析文庫數據內容, 圖片所在地址
獲取所有圖片內容: 文庫數據 –> 圖片形式 —> 所有圖片內容保存下載
文字識別, 把圖片文字識別出來, 保存word文檔裡面
二. 代碼實現步驟
1.發送請求, 模擬瀏覽器對於url地址發送請求
圖片數據包
2.獲取數據, 獲取服務器返回響應數據
開發者工具: response
3.解析數據, 提取圖片鏈接地址
4.保存數據, 把圖片內容保存到本地文件夾
5.做文字識別, 識別文字內容
6.把文字數據信息, 保存word文檔裡面
代碼展示
# 導入數據請求模塊 import requests # 導入格式化輸出模塊 from pprint import pprint # 導入base64 import base64 # 導入os模塊 import os # 導入文檔模塊 from docx import Document # 導入正則 import re # 導入json import json
文字識別:
- 註冊一個百度雲API賬號
- 創建應用 並且去免費領取資源
- 在技術文檔裡面 Access Token獲取
- 調用API接口去做文字識別
def get_content(file): # client_id 為官網獲取的AK, client_secret 為官網獲取的SK host = 'https://aip.****.com/oauth/2.0/token?grant_type=client_credentials&client_id=Gu7BGsfoKFZjLGvOKP7WezYv&client_secret=rGa2v2FcVnxBDFlerSW5H0D2eO7nRxdp' response = requests.get(host) access_token = response.json()['access_token'] ''' 通用文字識別(高精度版) ''' request_url = "https://aip.****.com/rest/2.0/ocr/v1/accurate_basic" # 二進制方式打開圖片文件 f = open(file, 'rb') img = base64.b64encode(f.read()) 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 = '\n'.join([i['words'] for i in json_data['words_result']]) return words
# # 讀取文件夾裡面所有圖片內容 # content_list = [] # files = os.listdir('img\\') # for file in files: # filename = 'img\\' + file # words = get_content(file=filename) # print(words) # content_list.append(words) # # # 保存word文檔裡面 # doc = Document() # # 添加第一段文檔內容 # content = '\n'.join(content_list) # doc.add_paragraph(content) # doc.save('data.docx')
link = 'https://wenku.****.com/aggs/74d1a923482fb4daa58d4b8e?index=0&_wkts_=1670327737660&bdQuery=%E7%AD%94%E9%A2%98' # 請求頭 headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36' } html_data = requests.get(url=link, headers=headers).text json_data = json.loads(re.findall('var pageData = (.*?);', html_data)[0]) pprint(json_data) for j in json_data['aggInfo']['docList']: name = j['title'] # 名字 score = j['score'] # 評分 viewCount = j['viewCount'] # 閱讀量 downloadCount = j['downloadCount'] # 下載量 docId = j['docId'] # 數據包ID
1.發送請求, 模擬瀏覽器對於url地址發送請求
長鏈接, 可以分段寫
問號前面: url鏈接
問號後面: 請求參數/查詢參數
# 確定請求鏈接 url = 'https://wenku.****.com/gsearch/rec/pcviewdocrec' # 請求參數 data = { 'docId': docId, 'query': name, 'recPositions': '' } # 請求頭 headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36' } #發送請求 response = requests.get(url=url, params=data, headers=headers) # <Response [200]> 響應對象, 200 表示請求成功 print(response)
2.獲取數據, 獲取服務器返回響應數據
開發者工具: response
- response.json() 獲取響應json字典數據, 但是返回數據必須是完整json數據格式 花括號 {}
- response.text 獲取響應文本數據, 返回字符串 任何時候都可以, 但是基本獲取網頁源代碼的時候
- response.content 獲取響應二進制數據, 返回字節 保存圖片/音頻/視頻/特定格式文件
- print(response.json()) 打印字典數據, 呈現一行
- pprint(response.json()) 打印字典數據, 呈現多行, 展開效果
3.解析數據, 提取圖片鏈接地址
字典取值: 鍵值對 根據冒號左邊內容[鍵], 提取冒號右邊的內容[值]
# 定義文件名 整型 num = 1 # for循環遍歷, 把列表裡面元素一個一個提取出來 for index in response.json()['data']['relateDoc']: # index 字典呀 pic = index['pic'] print(pic)
# # 4. 保存數據 發送請求 + 獲取數據 二進制數據內容 # img_content = requests.get(url=pic, headers=headers).content # # 'img\\'<文件夾名字> + str(num)<文件名> + '.jpg'<文件後綴> mode='wb' 保存方式, 二進制保存 # # str(num) 強制轉換成 字符串 # # '圖片\\' 相對路徑, 相對於你代碼的路徑 你代碼在那個地方, 那個代碼所在地方圖片文件夾 # with open('圖片\\' + str(num) + '.jpg', mode='wb') as f: # # 寫入數據 保存數據 把圖片二進制數據保存 # f.write(img_content) # # 每次循環 + 1 # print(num) # num += 1
以上就是Python實現復制文檔數據的詳細內容,更多關於Python復制文檔數據的資料請關註WalkonNet其它相關文章!
推薦閱讀:
- Python實現老照片修復之上色小技巧
- python調用文字識別OCR輕松搞定驗證碼
- Python OpenCV實現人物動漫化效果
- Python爬蟲實戰演練之采集拉鉤網招聘信息數據
- Python實現爬取某站視頻彈幕並繪制詞雲圖