python selenium 右键另存为 模拟手动v+自动保存

需求

selenium 爬取过程中有部分网址无法图片元素或者无法截图页面,
使用ActionChains点击右键 然后加win32api 模拟手动保存

思路步骤

  1. 导入模块
  2. 在初始化driver对象的时候设定,浏览器静默保存(即保存时不弹出另存为按钮)和默认保存位置
  3. 打开所需网页
  4. 右键图片
  5. win32api 发送v键和enter键

具体代码

from selenium.webdriver import ActionChains
from selenium.webdriver.common.by import By
from seleniumwire import webdriver

from wzs.window import *
from wzs.key import *

chrome_options = webdriver.ChromeOptions()

path = r'C:\Users\Administrator\Desktop'
prefs = {
    'profile.default_content_settings.popups': 0,  # 设置为 0 禁止弹出窗口
    'savefile.default_directory': path,  # 设置保存路径
    'download.default_directory': path  # 设置下载路径
}
chrome_options.add_experimental_option('prefs', prefs)
driver = webdriver.Chrome(chrome_options=chrome_options)
driver.implicitly_wait(10)

driver.get('https://alifei04.cfp.cn/creative/vcg/800/version23/VCG41175510742.jpg')

# 在图片上右键
element = driver.find_element(by=By.XPATH, value='/html/body/img')
action = ActionChains(driver).move_to_element(element)
action.context_click(element).perform()
time.sleep(1)

# 按v
st = time.time()
while True:
    winds = find_handles(class_name='Chrome_WidgetWin_2')
    if winds:
        key_press(winds[0], "v")
        break
    if time.time() - st > 10 * 1000:
        print('没找到保持按钮')
        break

st = time.time()
while True:
    winds = find_handles(title='另存为', class_name='#32770')
    if winds:
        time.sleep(1)
        key_press(winds[0], "return")
        break
    if time.time() - st > 10 * 1000:
        print('没找到另存窗口')
        break

input('*----')  # 可以做其他事情 但是不嫩立即qiut 否则关闭浏览器了后就不能下载了
driver.quit()

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
引用\[1\]和\[2\]提供了使用PythonSelenium库进行模拟鼠标点击的示例代码。你可以根据这些示例代码来实现你的需求。首先,你需要安装Selenium库,并选择一个浏览器驱动程序(如Chrome或Firefox)。然后,你可以使用`ActionChains`类来执行鼠标点击操作。以下是一个示例代码: ```python from selenium import webdriver from selenium.webdriver.common.action_chains import ActionChains driver = webdriver.Chrome() # 使用Chrome浏览器驱动 driver.get("https://example.com") # 打开一个网页 element = driver.find_element_by_xpath("//xpath/to/element") # 定位到要点击的元素 actions = ActionChains(driver) actions.context_click(element).perform() # 执行鼠标点击操作 driver.quit() # 关闭浏览器 ``` 你可以根据你的具体需求修改代码中的网页地址和元素定位方式。希望这个示例能帮到你。 #### 引用[.reference_title] - *1* [python+selenium小结11:模拟鼠标并在菜单上选择](https://blog.csdn.net/jusulysunbeamy/article/details/90003194)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [selenium-webdriver(python) -- 鼠标事件(双击,)](https://blog.csdn.net/xiaodanpeng/article/details/50999026)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值