Python操作鼠標鍵盤和爬蟲

一.pyautogui 庫

pyautogui 是一個 Python 庫,允許控制鼠標和鍵盤。可以通過它編寫 Python 腳本來自動執行各種任務,例如點擊按鈕、輸入文本、移動鼠標等。這個庫非常適合用來編寫自動化腳本來完成重復性的工作,比如網頁表單填寫、屏幕截圖、GUI測試或者爬蟲等。

pip install pyautogui

二.常用功能

1. 獲取屏幕大小

import pyautogui# 獲取屏幕尺寸
screen_width, screen_height = pyautogui.size()
print("屏幕尺寸: %d x %s" % (screen_width, screen_height))

2.移動鼠標到屏幕中央

# 移動鼠標到屏幕中央
center_x, center_y = screen_width // 2, screen_height // 2
# duration 是移動時間, 默認為0, 這里在一秒內移動到中間
pyautogui.moveTo(center_x, center_y, duration=1)

3.單擊鼠標

# 指定位置單擊鼠標
pyautogui.click(button_x, button_y)

4.右鍵點擊鼠標

pyautogui.click(button='right')

5.雙擊鼠標

# 指定位置雙擊鼠標
pyautogui.doubleClick(button_x, button_y)

6.鍵盤輸入

# 輸入文本
pyautogui.typewrite("Hello, world!")

7.按下按鍵

# 按下 enter 鍵
pyautogui.press('enter')

8.按下組合鍵

### 按下組合鍵 Ctrl+S
pyautogui.hotkey('ctrl', 's')

9.截取全屏并保存

# 截取全屏并保存
screenshot = pyautogui.screenshot()
screenshot.save("screenshot.png")

10.截取部分屏幕

# 截取部分屏幕
region = (0, 0, 300, 400)  # x, y, width, height
screenshot = pyautogui.screenshot(region=region)
screenshot.save("screenshot_region.png")

三.根據與圖像尋找位置并雙擊

1. 尋找屏幕中的 button.png 的位置, 并雙擊

import pyautogui
import timetime.sleep(5)# 查找圖像在屏幕上的位置
button_location = pyautogui.locateOnScreen('button.png')if button_location:# 獲取圖像的中心位置button_x, button_y = pyautogui.center(button_location)# 點擊圖像中心pyautogui.doubleClick(button_x, button_y)
else:print("按鈕未找到")

2.對于找不到圖片的問題

有時候圖像的分辨率不合適, 或者匹配度不高, 可以增加 locateOnScreen() 的 confidence 參數為匹配度, 當匹配度高于指定值, 則匹配位置但是需要安裝 OpenCV 的包

pip install opencv-python
import pyautogui
import timetime.sleep(5)# 查找圖像在屏幕上的位置
button_location = pyautogui.locateOnScreen('button.png', confidence=0.8)if button_location:# 獲取圖像的中心位置button_x, button_y = pyautogui.center(button_location)# 點擊圖像中心pyautogui.doubleClick(button_x, button_y)
else:print("按鈕未找到")

3.指定區域搜索圖像

locateOnScreen() 還可以增加 region 參數, 在指定區域內尋找

# 定義屏幕區域 (x, y, width, height)
region = (100, 100, 800, 600)button_location = pyautogui.locateOnScreen('button.png', region=region, confidence=0.8)

四.爬蟲

我們常見的爬蟲, 有分析網頁的, 有分析后端接口的, 其實還有這種簡單粗暴, 直接操作鼠標鍵盤進行重復性保存的, 比如有某個網站有一個圖片組成的電子書, 需要點擊按鈕到下一頁, 如果手動保存的需要一個個另存為, 但是因為下一頁的位置是固定的, 每頁圖片出現的位置是固定的, 所以直接可以使用 pyautogui 代替我們進行手動的翻頁和另存為。

1. 尋找按鈕的位置

我們可以按照上面說的, 根據按鈕的截圖自動取尋找按鈕的坐標, 但是精度不能保證, 或者相似的圖標太多都是問題。

我們也可以先讀出按鈕的坐標, 如下所示, 在5秒內將鼠標移動到按鈕位置, 然后等待打印就可以獲取了

import pyautogui
import timeprint("請在5秒內將鼠標移動到按鈕位置...")
time.sleep(5)
button_position = pyautogui.position()print(f"按鈕位置: {button_position}")

2.爬蟲

主要是進行另存為和翻頁的功能

import pyautogui
import time# 設置按鈕的位置 (x, y), 就是下一頁的位置
button_x, button_y = 1896, 598# 等待操作完成,比如新頁面加載或彈出框出現
time.sleep(3)cnt = 1
# 387 為操作次數, 比如一個
while cnt < 387:# 點擊按鈕, 進行翻頁if cnt > 1:pyautogui.click(button_x, button_y)# 等待翻頁成功time.sleep(1)# 將鼠標移動到屏幕中間 (假設圖片在屏幕中間)screen_width, screen_height = pyautogui.size()center_x, center_y = screen_width // 2, screen_height // 2pyautogui.moveTo(center_x, center_y)# 右鍵點擊以彈出菜單pyautogui.click(button='right')# 等待菜單出現time.sleep(1)# 模擬按鍵操作(假設另存為是上下箭頭后回車)# 需要調整按鍵序列以匹配實際情況# 下箭頭(因為另存為按鈕在第二的位置)pyautogui.press('down')  pyautogui.press('down')# 回車pyautogui.press('enter')# 等待另存為窗口出現time.sleep(2)# 模擬按鍵操作以輸入文件名并保存file_path = '%d.jpg' % cntpyautogui.typewrite(file_path)# 等待一秒鍵入成功time.sleep(1)# 這個按鈕是將輸入法中的文字鍵入地址框pyautogui.press('enter')# 這個按鈕是指執行文件另存為時的保存按鈕pyautogui.press('enter')# 等待保存和下載完成time.sleep(2)cnt += 1

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/12732.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/12732.shtml
英文地址,請注明出處:http://en.pswp.cn/web/12732.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

STC8增強型單片機開發——定時器Timer

一、定時器 定時器是一種計時裝置&#xff0c;通常由一個晶體振蕩器提供時鐘信號&#xff0c;可以計時一定的時間后執行相應的操作。在單片機中&#xff0c;定時器一般是由計數器和時鐘源組成的&#xff0c;可以用來產生一定時間間隔的中斷信號&#xff0c;或者用于測量輸入信號…

開放式運動耳機哪款好用?五款高性能值得信賴產品推薦

身為戶外運動的達人&#xff0c;我發現開放式運動耳機簡直是咱們運動時的最佳拍檔&#xff0c;不管是跑步還是健身&#xff0c;開放式運動耳機最為舒適&#xff0c;它的妙處就在于不用塞進耳朵&#xff0c;這樣既安全又衛生&#xff0c;戶外動起來更放心。但市面上好壞參半&…

AIGC行業:探索發展風口,把握市場脈搏

AIGC行業現在適合進入嗎 簡介&#xff1a; AIGC行業&#xff1a;探索發展風口&#xff0c;把握市場脈搏 隨著人工智能技術的快速發展&#xff0c;AIGC&#xff08;人工智能生成內容&#xff09;行業正逐漸成為科技界的新寵。在當前的時代背景下&#xff0c;我們不禁要問&…

Chisel中對對<: 和:的理解(其實是Scala中的理解)

在 Scala 語言和 Chisel 硬件構造語言中&#xff0c;<: 和 : 是用于類型注解的兩個不同的符號&#xff0c;它們在泛型編程和類型系統中扮演重要角色。下面是它們各自的意義和用途&#xff1a; <:&#xff08;子類型關系&#xff09; <: 符號在 Scala 中表示子類型關…

Nginx詳細介紹一

Nginx是一個高性能的HTTP和反向代理服務器&#xff0c;它也可以作為郵件服務器使用。 Nginx基本介紹 基本概念&#xff1a; Nginx可以處理大量的并發連接&#xff0c;具有很高的穩定性和低資源消耗的特點。它主要用于Web服務、反向代理、負載均衡和HTTP緩存等場景。 安裝與配…

【半夜學習MySQL】內置函數(含日期、字符串、數學等函數常用用法介紹及示例詳解)

&#x1f3e0;關于專欄&#xff1a;半夜學習MySQL專欄用于記錄MySQL數據相關內容。 &#x1f3af;每天努力一點點&#xff0c;技術變化看得見 文章目錄 日期函數字符串函數數學函數其他函數 日期函數 函數名稱描述current_date()當前日期current_time()當前時間current_time()…

php8.2使用laravel V11.0

報錯&#xff1a;You must enable the openssl extension in your php.ini to load information from https://mirrors.aliyun.com/composer 1、搜索&#xff1a;extension_dir去掉;號 2、搜索&#xff1a;extensionopenssl去掉;號

幻獸帕魯Palworld服務器手動部署

目錄 帕魯官方文檔手動安裝steamcmd通過steamcmd安裝帕魯后端客戶端連接附錄&#xff1a;PalServer.sh的啟動項附錄&#xff1a;配置文件 帕魯官方文檔 https://tech.palworldgame.com/ 手動安裝steamcmd 創建steam用戶 sudo useradd -m steam sudo passwd steam下載steamc…

你寫HTML的時候,會注重語義化嗎?

其實說到語義化&#xff0c;多年前端開發經驗的老手估計也不會太在意&#xff0c;有時候工期太緊&#xff0c;有時候自己疏忽&#xff0c;也就不那么在意了&#xff0c;直接DIVCSS一把梭下去了。 目錄 什么是HTML 什么是HTML語義化 HTML語義化所帶來的好處 我把CSS樣式引入…

_pickle.UnpicklingError: STACK_GLOBAL requires str

導致這個報錯的原因是我跑yolo的時候修改數據集了&#xff0c;里面的label.cache沒有刪除&#xff0c;咱只要刪除掉緩存就行&#xff01;&#xff01; 我這里是已經刪除掉了&#xff0c;所以圖片里面沒有&#xff0c;一般就是在箭頭所示位置有.cache文件的

Vue3知識總結-4

Vue3知識總結-4 文章目錄 Vue3知識總結-4插槽Slots渲染作用域默認內容具名插槽插槽中的數據傳遞具名插槽傳遞數據 組件聲明周期聲明周期示意圖 組件生命周期的應用動態組件組件保持存活組件被卸載 異步組件依賴注入 插槽Slots 在某些場景中&#xff0c;可能想要為子組件傳遞一…

xxljob分片廣播+多線程實現高效定時同步elasticsearch索引庫

需求&#xff1a;為了利用elasticsearch實現高效搜索&#xff0c;需要將mysql中的數據查出來&#xff0c;再定時同步到es里&#xff0c;同時在同步過程中通過分片廣播多線程提高同步數據的效率。 1. 添加映射 使用kibana添加映射 PUT /app_info_article {"mappings&quo…

HL7協議

提示&#xff1a;文章寫完后&#xff0c;目錄可以自動生成&#xff0c;如何生成可參考右邊的幫助文檔 文章目錄 1.介紹2.傳輸協議規范2.1. MLLP2.1.1. 數據頭定義2.1.2. 轉義字符集 2.2. 規范說明2.3. 消息格式說明 3.HL7結構介紹3.1. 患者建檔&#xff08;ADT^A28&#xff09;…

linux c++獲取當前程序的運行路徑

比如我的程序名為:aaa 存放路徑是:/homo/code/ 我在/home/ccc 目錄執行shell文件。shell文件的內容為 #!/bin/bash /homo/code/aaa我希望獲取的路徑是 /homo/code/ 而不是腳本的路徑 給出完整接口代碼 #include <iostream> #include <string> #include <stri…

人工智能領域向量化技術加速多模態大模型訓練與應用

目錄 前言1、TextIn文檔解析技術1.1、文檔解析技術1.2、目前存在的問題1.2.1、不規則的文檔信息示例 1.3、合合信息的文檔解析1.3.1、合合信息的TextIn文檔解析技術架構1.3.2、版面分析關鍵技術 Layout-engine1.3.3、文檔樹提取關鍵技術 Catalog-engine1.3.4、雙欄1.3.5、非對稱…

matlab實現馬爾科夫鏈

在MATLAB中實現馬爾科夫鏈算法通常涉及定義狀態轉移矩陣、初始化狀態向量以及迭代狀態轉移過程。以下是一個簡單的步驟和示例代碼&#xff0c;用于演示如何在MATLAB中實現馬爾科夫鏈。 步驟 定義狀態轉移矩陣&#xff1a;狀態轉移矩陣P描述了從一個狀態轉移到另一個狀態的概率…

注冊海外公司為什么?

注冊海外公司通常是為了實現以下目標之一&#xff1a; 國際化業務擴張&#xff1a; 一些企業可能希望在海外注冊子公司&#xff0c;以便在國際市場上開展業務。這樣的公司可能是跨國企業&#xff0c;已經在多個國家有業務&#xff0c;或者是希望進入新的國際市場的企業。 稅收…

計算機服務器中了locked勒索病毒怎么解決,locked勒索病毒解密恢復工具

在網絡技術飛速發展的時代&#xff0c;通過網絡開展各項工作業務成為眾多企業的首選&#xff0c;網絡也為企業的生產運營提供了極大便利&#xff0c;大大提升了企業辦公效率&#xff0c;但是利用網絡避免不了網絡威脅的存在&#xff0c;數據安全問題一直是企業關心的主要話題。…

不知道代理IP怎么挑?一文帶你了解挑選的關鍵點!

IP代理在如今的網絡環境中扮演者至關重要的角色。通過使用代理IP&#xff0c;可以增強用戶個人信息和網絡的安全。但想要挑選到適合自己的代理IP&#xff0c;并非是一件易事。今天就為大家帶來挑選代理IP的關鍵注意點&#xff0c;幫你輕松篩選出最佳的選擇。 穩定性與速度&…

TikTok機房ip好還是住宅ip好?

住宅ip比較好&#xff0c;機房數據中心IP高效、低價&#xff0c;所以使用的人多且用處復雜&#xff0c;這類ip極大可能存在濫用的黑歷史&#xff0c;通過此類ip訪問tiktok&#xff0c;被禁止的可能性更高&#xff0c;更容易被拉入黑名單。所以我們推薦tiktok獨享原生ip搭建節點…