1、定位鼠标坐标
import pyautogui
time.sleep(5)
x,y = pyautogui.position()
print('鼠标位置:x=%d,y=%d'%(x,y))
2、定位到坐标后,进行操作
import pyautogui
import time
# 正负数 表示向上或向下 数值越大滚动幅度越大
pyautogui.scroll(200) # 向上滚动
sleep(5)
pyautogui.scroll(-200) # 向下滚动
sleep(5)
# 鼠标移动位置 x表横坐标, y表示纵坐标 单位像素, duration表示移动速度
pyautogui.moveTo(x=1300, y=250, duration=2)
sleep(5)
# 鼠标左击一下 x表横坐标, y表示纵坐标 单位像素, button=left 表示左键
pyautogui.click(x=738, y=223, button='left')
sleep(5)
# 发送英文字符,不支持中文字符
pyautogui.typewrite('hello world')
sleep(5)
# 启动键盘热键 粘贴功能
pyautogui.hotkey('ctrl', 'v')
3、备注
使用selelnium模拟浏览器时,最好添加浏览器最大化这一步骤:
driver.maximize_window()
4、实战:爬取扇贝在学单词表
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import pyautogui
import time
import xlwt
# 登陆扇贝(通过微信扫码登陆)
driver = webdriver.Chrome()
url = "https://web.shanbay.com/web/account/login/"
driver.get(url)
driver.maximize_window()
微信登陆按钮 = driver.find_element_by_xpath('//div[@class="third-party-box"]/div[1]/a')
微信登陆按钮.send_keys(Keys.ENTER)
driver.implicitly_wait(5)
# 进入需要爬取的页面(词表--在学单词)
词表按钮 = driver.find_element_by_xpath('//div[@class="index_status__15KG5"]/a')
词表按钮.send_keys(Keys.ENTER)
# 通过鼠标定位获得“在学单词”位置,并点击
pyautogui.click(x=691,y=527,button="left")
# 创建数据容器,以便后续导入excel中
word_list = []
translate_list = []
# 爬取当前页的数据(翻页部分需手动点击“下一页”)
num = input('请输入总页数:')
num = int(num)
for page in range(1,num+1):
words = driver.find_elements_by_xpath('//div[@class="index_top__1grCv"]/div[1]')
translates = driver.find_elements_by_xpath('//div[@class="index_bottom__XLoPQ"]/span[2]')
for word in words:
word_list.append(word.text)
for translate in translates:
translate_list.append(translate.text)
print('第%d页提取完成,请在5秒内手动点击下一页!'%page)
time.sleep(3)
#创建工作簿和工作表,并保存数据
workbook = xlwt.Workbook()
sheet = workbook.add_sheet('sheet1')
headers = ['单词','释义']
for index,header in enumerate(headers):
sheet.write(0,index,header)
for index,word in enumerate(word_list):
sheet.write(index+1,0,word)
for index,translate in enumerate(translate_list):
sheet.write(index+1,1,translate)
workbook.save('扇贝在学单词表.xls')
print('所有单词提取完成!')
# 提取鼠标坐标位置的方法:
# time.sleep(5)
# x,y = pyautogui.position()
# print('鼠标位置:x=%d,y=%d'%(x,y))