Python實(shí)現(xiàn)復(fù)制文檔數(shù)據(jù)
前言
我們百度搜索一些東西得時候,經(jīng)常找到文檔里面
然后就會發(fā)現(xiàn)需要充值才能復(fù)制!怎么可以不花錢也保存呢?
今天就分享給大家一個python獲取文檔數(shù)據(jù)得方法
環(huán)境使用
python 3.8
pycharm
模塊使用
requests >>> 數(shù)據(jù)請求模塊 pip install requests
docx >>> 文檔保存 pip install python-docx
re 內(nèi)置模塊 不需要安裝
ctrl + R : 首先你得看得數(shù)據(jù), 才能想辦法獲取
安裝python第三方模塊
win + R 輸入 cmd 點(diǎn)擊確定, 輸入安裝命令 pip install 模塊名 (pip install requests) 回車
在pycharm中點(diǎn)擊Terminal(終端) 輸入安裝命令
基本思路流程
一. 分析數(shù)據(jù)來源
找文檔數(shù)據(jù)內(nèi)容, 是在那個url里面生成的
通過開發(fā)者工具進(jìn)行抓包分析
1.打開開發(fā)者工具: F12 / 鼠標(biāo)右鍵點(diǎn)擊檢查選擇network
2.刷新網(wǎng)頁: 讓本網(wǎng)頁數(shù)據(jù)內(nèi)容重新加載一遍
如果你是非VIP賬號, 看數(shù)據(jù), 圖片形式 —> 把數(shù)據(jù)<圖片> 獲取下來 —> 做文字識別
3.分析文庫數(shù)據(jù)內(nèi)容, 圖片所在地址
獲取所有圖片內(nèi)容: 文庫數(shù)據(jù) --> 圖片形式 —> 所有圖片內(nèi)容保存下載
文字識別, 把圖片文字識別出來, 保存word文檔里面
二. 代碼實(shí)現(xiàn)步驟
1.發(fā)送請求, 模擬瀏覽器對于url地址發(fā)送請求
圖片數(shù)據(jù)包
2.獲取數(shù)據(jù), 獲取服務(wù)器返回響應(yīng)數(shù)據(jù)
開發(fā)者工具: response
3.解析數(shù)據(jù), 提取圖片鏈接地址
4.保存數(shù)據(jù), 把圖片內(nèi)容保存到本地文件夾
5.做文字識別, 識別文字內(nèi)容
6.把文字?jǐn)?shù)據(jù)信息, 保存word文檔里面
代碼展示
# 導(dǎo)入數(shù)據(jù)請求模塊 import requests # 導(dǎo)入格式化輸出模塊 from pprint import pprint # 導(dǎo)入base64 import base64 # 導(dǎo)入os模塊 import os # 導(dǎo)入文檔模塊 from docx import Document # 導(dǎo)入正則 import re # 導(dǎo)入json import json
文字識別:
- 注冊一個百度云API賬號
- 創(chuàng)建應(yīng)用 并且去免費(fèi)領(lǐng)取資源
- 在技術(shù)文檔里面 Access Token獲取
- 調(diào)用API接口去做文字識別
def get_content(file): # client_id 為官網(wǎng)獲取的AK, client_secret 為官網(wǎng)獲取的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" # 二進(jìn)制方式打開圖片文件 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() # 列表推導(dǎo)式 words = '\n'.join([i['words'] for i in json_data['words_result']]) return words
# # 讀取文件夾里面所有圖片內(nèi)容 # 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() # # 添加第一段文檔內(nèi)容 # 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'] # 數(shù)據(jù)包ID
1.發(fā)送請求, 模擬瀏覽器對于url地址發(fā)送請求
長鏈接, 可以分段寫
問號前面: url鏈接
問號后面: 請求參數(shù)/查詢參數(shù)
# 確定請求鏈接 url = 'https://wenku.****.com/gsearch/rec/pcviewdocrec' # 請求參數(shù) 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' } #發(fā)送請求 response = requests.get(url=url, params=data, headers=headers) # <Response [200]> 響應(yīng)對象, 200 表示請求成功 print(response)
2.獲取數(shù)據(jù), 獲取服務(wù)器返回響應(yīng)數(shù)據(jù)
開發(fā)者工具: response
- response.json() 獲取響應(yīng)json字典數(shù)據(jù), 但是返回數(shù)據(jù)必須是完整json數(shù)據(jù)格式 花括號 {}
- response.text 獲取響應(yīng)文本數(shù)據(jù), 返回字符串 任何時候都可以, 但是基本獲取網(wǎng)頁源代碼的時候
- response.content 獲取響應(yīng)二進(jìn)制數(shù)據(jù), 返回字節(jié) 保存圖片/音頻/視頻/特定格式文件
- print(response.json()) 打印字典數(shù)據(jù), 呈現(xiàn)一行
- pprint(response.json()) 打印字典數(shù)據(jù), 呈現(xiàn)多行, 展開效果
3.解析數(shù)據(jù), 提取圖片鏈接地址
字典取值: 鍵值對 根據(jù)冒號左邊內(nèi)容[鍵], 提取冒號右邊的內(nèi)容[值]
# 定義文件名 整型 num = 1 # for循環(huán)遍歷, 把列表里面元素一個一個提取出來 for index in response.json()['data']['relateDoc']: # index 字典呀 pic = index['pic'] print(pic)
# # 4. 保存數(shù)據(jù) 發(fā)送請求 + 獲取數(shù)據(jù) 二進(jìn)制數(shù)據(jù)內(nèi)容 # img_content = requests.get(url=pic, headers=headers).content # # 'img\\'<文件夾名字> + str(num)<文件名> + '.jpg'<文件后綴> mode='wb' 保存方式, 二進(jìn)制保存 # # str(num) 強(qiáng)制轉(zhuǎn)換成 字符串 # # '圖片\\' 相對路徑, 相對于你代碼的路徑 你代碼在那個地方, 那個代碼所在地方圖片文件夾 # with open('圖片\\' + str(num) + '.jpg', mode='wb') as f: # # 寫入數(shù)據(jù) 保存數(shù)據(jù) 把圖片二進(jìn)制數(shù)據(jù)保存 # f.write(img_content) # # 每次循環(huán) + 1 # print(num) # num += 1
以上就是Python實(shí)現(xiàn)復(fù)制文檔數(shù)據(jù)的詳細(xì)內(nèi)容,更多關(guān)于Python復(fù)制文檔數(shù)據(jù)的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python 利用pandas和mysql-connector獲取Excel數(shù)據(jù)寫入到MySQL數(shù)據(jù)庫
在實(shí)際應(yīng)用中,我們可能需要將Excel表格中的數(shù)據(jù)導(dǎo)入到MySQL數(shù)據(jù)庫中,以便于進(jìn)行進(jìn)一步的數(shù)據(jù)分析和處理,本文將介紹如何使用Python將Excel表格中的數(shù)據(jù)插入到MySQL數(shù)據(jù)庫中,需要的朋友可以參考下2023-10-10python3 簡單實(shí)現(xiàn)組合設(shè)計模式
這篇文章主要介紹了python3 簡單實(shí)現(xiàn)組合設(shè)計模式的方法,文中示例代碼非常詳細(xì),幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下2020-07-07pytorch __init__、forward與__call__的用法小結(jié)
這篇文章主要介紹了pytorch __init__、forward與__call__的用法小結(jié),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-02-02淺談python多進(jìn)程共享變量Value的使用tips
今天小編就為大家分享一篇淺談python多進(jìn)程共享變量Value的使用tips,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-07-07Python數(shù)據(jù)結(jié)構(gòu)與算法之使用隊列解決小貓釣魚問題
這篇文章主要介紹了Python數(shù)據(jù)結(jié)構(gòu)與算法之使用隊列解決小貓釣魚問題,結(jié)合實(shí)例形式分析了Python使用隊列實(shí)現(xiàn)小貓釣魚游戲的算法操作技巧,代碼中備有較為詳盡的注釋便于讀者理解,需要的朋友可以參考下2017-12-12代碼解析python標(biāo)準(zhǔn)庫logging模塊
這篇文章主要為大家介紹了代碼解析python標(biāo)準(zhǔn)庫logging模塊,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05解決Tensorflow2.0 tf.keras.Model.load_weights() 報錯處理問題
這篇文章主要介紹了解決Tensorflow2.0 tf.keras.Model.load_weights() 報錯處理問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨想過來看看吧2020-06-06