通过控制鼠标键盘直接从浏览器中爬取

初学者在面对浏览器的拖动验证时,通过pynput和win32api库创建模拟鼠标键盘操作的方法,绕过拖动验证。启动自有浏览器完成验证后,从浏览器的开发者工具中获取所需信息。虽然效率较低,但能有效应对某些需要拖动的情况。
摘要由CSDN通过智能技术生成

通过控制鼠标键盘直接从浏览器中爬取
由于初学,未找到requests和selenium绕过反爬的解决方法(主要过不了拖动验证),通过制作类似按键精灵的方法启动自有浏览器(安全通过拖动验证),然后从浏览器开发模式的response复制出需要的信息。可根据自己浏览器将鼠标点击的坐标重新设置后使用,注意在点击搜索或者搜索结果等多种清空均可能出现需要拖动的时候,可多加入一些拖动避免操作异常,效率比较低,好在可以使用。

from pynput import keyboard
from pynput import mouse
import time
import win32api
import win32clipboard as w
import win32con
import json
import math

class controlMouseAndKeyboard:
    def __init__(self):
        self.m = mouse.Controller()
        self.kb = keyboard.Controller()
	#  两种启动本地浏览器的方法
    def start_amap(self):
        win32api.ShellExecute(0, 'open', r'C:\Users\Administrator\AppData\Local\Google\Chrome\Application\chrome.exe', '', '', 4)
        # self.app = win32process.CreateProcess(r'C:\Users\Administrator\AppData\Local\Google\Chrome\Application\chrome.exe', '', None, None, 0, win32process.NORMAL_PRIORITY_CLASS, None, None, win32process.STARTUPINFO())
        time.sleep(2)
        self.kb.type('ditu.amap.com')
        time.sleep(2)
        self.kb.press(keyboard.Key.enter)
        time.sleep(2)
	#鼠标左击
    def left_click(self, x, y):
        self.m.position = (x, y)
        self.m.click(mouse.Button.left, 1)
        time.sleep(2)
     #鼠标右击
    def right_click(self, x, y):
        self.m.position = (x, y)
        self.m.click(mouse.Button.right, 1)
        time.sleep(2)
    #鼠标左键按住拖动
    def drag_left(self, x1, y1, x2, y2):
        self.m.position = (x1, y1)
        time.sleep(1)
        self.m.press(mouse.Button.left)
        time.sleep(1)
        self.m.position = (x2, y2)
        time.sleep(1)
        self.m.release(mouse.Button.left)
        time.sleep(1)
    # ctrl+c 复制到剪切板
    def copy_all(self):
        with self.kb.pressed(keyboard.Key.ctrl):
            self.kb.press('a')
            time.sleep(0.5)
            self.kb.release('a')
        time.sleep(1)
        with self.kb.pressed(keyboard.Key.ctrl):
            self.kb.press('c')
            time.sleep(0.5)
            self.kb.release('c')
   #读取剪切版内容
    def gettext(self):
        w.OpenClipboard()
        t = w.Ge
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值