首頁 > 軟體

Python實現強制複製貼上的範例詳解

2022-12-19 14:01:25

前因後果

公司有人陽了,今天在家上班,突然小姨子就問我有沒有baidu文庫會員,想下載點東西,我心想這還要會員?用Python不是分分鐘的事情!

然後我非常自信的告訴她不用會員隨便下載,結果她順勢想來我家,還問我她姐姐在不在家,趁我一個人在家過來想幹嘛?本著男孩子一個人在家要好好保護自己的原則,於是我過段拒絕了她!

兄弟們我做的對嗎?

咱們來開始今天的內容,咱們不僅要強制複製貼上,還要自動儲存到world檔案,就問你刑不刑!

需要的模組

requests  # 資料請求模組
docx  # 檔案儲存 
re    # 內建模組 不需要安裝

除了 re 模組,前面兩個都是第三方模組,需要手動安裝,win+r 開啟執行框輸入cmd,點選確定彈出命令提示字元視窗輸入 pip install 加上模組名即可。

docx 需要加上Python ,pip install python-docx

流程思路

基本思路流程

一、分析資料來源

找檔案資料內容, 是在那個url裡面生成的,通過開發者工具進行抓包分析。

  • 開啟開發者工具: F12 / 滑鼠右鍵點選檢查選擇network
  • 重新整理網頁: 讓本網頁資料內容重新載入一遍,如果你是非VIP賬號, 看資料, 圖片形式 —> 把資料<圖片> 獲取下來 —> 做文字識別;
  • 分析文庫資料內容,,圖片所在地址;
  • 獲取所有圖片內容: 文庫資料 --> 圖片形式 —> 所有圖片內容儲存下載
  • 文字識別, 把圖片文字識別出來, 儲存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

文字識別:

1. 註冊一個百度雲API賬號

2. 建立應用 並且去免費領取資源

3. 在技術檔案裡面 Access Token獲取

4. 呼叫API介面來做文字識別

client_id 為官網獲取的AK, client_secret 為官網獲取的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']

通用文字識別(高精度版)

request_url = "https://aip.baidubce.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')

傳送請求,模擬瀏覽器對於url地址傳送請求。

請求頭

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

確定請求連結

url = 'https://wenku.baidu.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.json() 獲取響應json字典資料, 但是返回資料必須是完整json資料格式 花括號 {}
  • response.text 獲取響應文字資料, 返回字串 任何時候都可以, 但是基本獲取網頁原始碼的時候
  • response.content 獲取響應二進位制資料, 返回位元組 儲存圖片/音訊/視訊/特定格式檔案

解析資料, 提取圖片連結地址

字典取值: 鍵值對 根據冒號左邊內容[鍵], 提取冒號右邊的內容[值]

for迴圈遍歷, 把列表裡面元素一個一個提取出來

# 定義檔名 整型
num = 1
# for迴圈遍歷, 把列表裡面元素一個一個提取出來
for index in response.json()['data']['relateDoc']:
    # index 字典呀
    pic = index['pic']
    print(pic)

儲存資料 傳送請求 + 獲取資料 二進位制資料內容

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

效果展示

world檔案

以上就是Python實現強制複製貼上的範例詳解的詳細內容,更多關於Python強制複製貼上的資料請關注it145.com其它相關文章!


IT145.com E-mail:sddin#qq.com