Python實(shí)現(xiàn)強(qiáng)制復(fù)制粘貼的示例詳解
前因后果
公司有人陽(yáng)了,今天在家上班,突然小姨子就問(wèn)我有沒(méi)有baidu文庫(kù)會(huì)員,想下載點(diǎn)東西,我心想這還要會(huì)員?用Python不是分分鐘的事情!
然后我非常自信的告訴她不用會(huì)員隨便下載,結(jié)果她順勢(shì)想來(lái)我家,還問(wèn)我她姐姐在不在家,趁我一個(gè)人在家過(guò)來(lái)想干嘛?本著男孩子一個(gè)人在家要好好保護(hù)自己的原則,于是我過(guò)段拒絕了她!

兄弟們我做的對(duì)嗎?
咱們來(lái)開(kāi)始今天的內(nèi)容,咱們不僅要強(qiáng)制復(fù)制粘貼,還要自動(dòng)保存到world文檔,就問(wèn)你刑不刑!
需要的模塊
requests # 數(shù)據(jù)請(qǐng)求模塊
docx # 文檔保存
re # 內(nèi)置模塊 不需要安裝
除了 re 模塊,前面兩個(gè)都是第三方模塊,需要手動(dòng)安裝,win+r 打開(kāi)運(yùn)行框輸入cmd,點(diǎn)擊確定彈出命令提示符窗口輸入 pip install 加上模塊名即可。
docx 需要加上Python ,pip install python-docx
流程思路
基本思路流程
一、分析數(shù)據(jù)來(lái)源
找文檔數(shù)據(jù)內(nèi)容, 是在那個(gè)url里面生成的,通過(guò)開(kāi)發(fā)者工具進(jìn)行抓包分析。
- 打開(kāi)開(kāi)發(fā)者工具: F12 / 鼠標(biāo)右鍵點(diǎn)擊檢查選擇network
- 刷新網(wǎng)頁(yè): 讓本網(wǎng)頁(yè)數(shù)據(jù)內(nèi)容重新加載一遍,如果你是非VIP賬號(hào), 看數(shù)據(jù), 圖片形式 —> 把數(shù)據(jù)<圖片> 獲取下來(lái) —> 做文字識(shí)別;
- 分析文庫(kù)數(shù)據(jù)內(nèi)容,,圖片所在地址;
- 獲取所有圖片內(nèi)容: 文庫(kù)數(shù)據(jù) --> 圖片形式 —> 所有圖片內(nèi)容保存下載
- 文字識(shí)別, 把圖片文字識(shí)別出來(lái), 保存word文檔里面
二、代碼實(shí)現(xiàn)步驟
1.發(fā)送請(qǐng)求, 模擬瀏覽器對(duì)于url地址發(fā)送請(qǐng)求
圖片數(shù)據(jù)包:
2.獲取數(shù)據(jù), 獲取服務(wù)器返回響應(yīng)數(shù)據(jù)
開(kāi)發(fā)者工具: response
3.解析數(shù)據(jù), 提取圖片鏈接地址
4.保存數(shù)據(jù), 把圖片內(nèi)容保存到本地文件夾
5.做文字識(shí)別, 識(shí)別文字內(nèi)容
6.把文字?jǐn)?shù)據(jù)信息, 保存word文檔里面
代碼展示
導(dǎo)入模塊
# 導(dǎo)入數(shù)據(jù)請(qǐng)求模塊 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
文字識(shí)別:
1. 注冊(cè)一個(gè)百度云API賬號(hào)
2. 創(chuàng)建應(yīng)用 并且去免費(fèi)領(lǐng)取資源
3. 在技術(shù)文檔里面 Access Token獲取
4. 調(diào)用API接口來(lái)做文字識(shí)別
client_id 為官網(wǎng)獲取的AK, client_secret 為官網(wǎng)獲取的SK
host = 'https://aip.baidubce.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']
通用文字識(shí)別(高精度版)
request_url = "https://aip.baidubce.com/rest/2.0/ocr/v1/accurate_basic"
二進(jìn)制方式打開(kāi)圖片文件
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')
發(fā)送請(qǐng)求,模擬瀏覽器對(duì)于url地址發(fā)送請(qǐng)求。
請(qǐng)求頭
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'] # 評(píng)分
viewCount = j['viewCount'] # 閱讀量
downloadCount = j['downloadCount'] # 下載量
docId = j['docId'] # 數(shù)據(jù)包ID
確定請(qǐng)求鏈接
url = 'https://wenku.baidu.com/gsearch/rec/pcviewdocrec'
請(qǐng)求參數(shù)
data = {
'docId': docId,
'query': name,
'recPositions': ''
}
請(qǐng)求頭
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ā)送請(qǐng)求
response = requests.get(url=url, params=data, headers=headers)
獲取數(shù)據(jù), 獲取服務(wù)器返回響應(yīng)數(shù)據(jù)
- response.json() 獲取響應(yīng)json字典數(shù)據(jù), 但是返回?cái)?shù)據(jù)必須是完整json數(shù)據(jù)格式 花括號(hào) {}
- response.text 獲取響應(yīng)文本數(shù)據(jù), 返回字符串 任何時(shí)候都可以, 但是基本獲取網(wǎng)頁(yè)源代碼的時(shí)候
- response.content 獲取響應(yīng)二進(jìn)制數(shù)據(jù), 返回字節(jié) 保存圖片/音頻/視頻/特定格式文件
解析數(shù)據(jù), 提取圖片鏈接地址
字典取值: 鍵值對(duì) 根據(jù)冒號(hào)左邊內(nèi)容[鍵], 提取冒號(hào)右邊的內(nèi)容[值]
for循環(huán)遍歷, 把列表里面元素一個(gè)一個(gè)提取出來(lái)
# 定義文件名 整型
num = 1
# for循環(huán)遍歷, 把列表里面元素一個(gè)一個(gè)提取出來(lái)
for index in response.json()['data']['relateDoc']:
# index 字典呀
pic = index['pic']
print(pic)
保存數(shù)據(jù) 發(fā)送請(qǐng)求 + 獲取數(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)換成 字符串
# '圖片\\' 相對(duì)路徑, 相對(duì)于你代碼的路徑 你代碼在那個(gè)地方, 那個(gè)代碼所在地方圖片文件夾
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
效果展示

world文檔

以上就是Python實(shí)現(xiàn)強(qiáng)制復(fù)制粘貼的示例詳解的詳細(xì)內(nèi)容,更多關(guān)于Python強(qiáng)制復(fù)制粘貼的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
PyTorch實(shí)現(xiàn)FedProx聯(lián)邦學(xué)習(xí)算法
這篇文章主要為大家介紹了PyTorch實(shí)現(xiàn)FedProx的聯(lián)邦學(xué)習(xí)算法,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05
基于Opencv制作的美顏相機(jī)帶你領(lǐng)略美顏特效的效果
最關(guān)于美顏類相機(jī)最重要的是第一步:人臉檢測(cè),本篇文章中是采用openCV開(kāi)源庫(kù)實(shí)現(xiàn),文中給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值2021-09-09
keras 自定義loss model.add_loss的使用詳解
這篇文章主要介紹了keras 自定義loss model.add_loss的使用詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-06-06
Python 通過(guò)xpath屬性爬取豆瓣熱映的電影信息
我喜歡看電影,可以說(shuō)大部分熱門電影我都看過(guò)。處理愛(ài)好的目的,我看了看豆瓣熱映的電影列表。于是我寫了這個(gè)爬蟲(chóng)把豆瓣熱映的電影都爬了下來(lái)。對(duì)頁(yè)面的處理主要是需要點(diǎn)擊顯示全部電影,然后爬取影片屬性,最后輸出文本。采用的還是scrapy框架。順便聊聊我的實(shí)現(xiàn)過(guò)程吧2021-11-11
python實(shí)現(xiàn)自動(dòng)化腳本編寫
自動(dòng)化在很多時(shí)候是很方便的,本文以修改用戶名密碼單元為案例,編寫測(cè)試腳本。完成修改用戶名密碼模塊單元測(cè)試,感興趣的可以了解一下2021-06-06
Python著名游戲?qū)崙?zhàn)之方塊連接 我的世界
讀萬(wàn)卷書(shū)不如行萬(wàn)里路,學(xué)的扎不扎實(shí)要通過(guò)實(shí)戰(zhàn)才能看出來(lái),本篇文章手把手帶你模仿著名游戲——我的世界,大家可以在過(guò)程中查缺補(bǔ)漏,看看自己掌握程度怎么樣2021-10-10

