selenium + win32api + pyautogui
元素定位(可无头进行访问,但是会被检测,基本用不了)
sli_ele = driver.find_element(By.XPATH, '//span[@id="nc_1_n1z"]')
if sli_ele.is_displayed():
ActionChains(driver).click_and_hold(on_element=sli_ele).perform()
ActionChains(driver).move_by_offset(xoffset=260, yoffset=0).perform()
time.sleep(2)
ActionChains(driver).pause(0.5).release().perform()
time.sleep(2)
win32api(拖拽方式,mac系统不可用)
win32api.SetCursorPos((450, 410))
time.sleep(2)
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 450, 410)
time.sleep(0.5)
win32api.mouse_event(win32con.MOUSEEVENTF_MOVE, 300, 0)
time.sleep(1)
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0)
pyautogui模块(局限需要开启浏览器进行滑动,暂时看支持mac和windows,要比wei32好)
pyautogui.PAUSE = 1
pyautogui.FAILSAFE = False
x,y = pyautogui.locateCenterOnScreen("aj.png", confidence=0.8)
print(x,y)
pyautogui.moveTo(x,y, duration=1)
pyautogui.mouseDown()
pyautogui.dragTo(x,random.choice([450,550]), duration=0.5,button='left')
代码
import re
import os
import time
import random
import pyautogui
from lxml import etree
from selenium import webdriver
def drivers(headless=None,procxy=None,time=30):
'''
初始化driver
'''
option = webdriver.ChromeOptions()
option.add_argument('--headless')
option.add_argument('disable-infobars')
option.add_argument('--disable-gpu')
option.add_argument('--lang=zh-cn')
option.add_argument('--no-sandbox')
option.add_argument('disable-dev-shm-usage')
option.add_argument("--no-sandbox")
option.add_argument("--disable-dev-shm-usage")
option.add_argument("--window-size=1920x1080")
option.add_argument("start-maximised")
option.add_experimental_option('excludeSwitches', ['enable-automation'])
option.add_argument("--disable-blink-features=AutomationControlled")
driver = webdriver.Chrome(options=option)
driver.set_page_load_timeout(time)
driver.set_script_timeout(40)
return driver
def action(url):
driver.get(url)
time.sleep(5)
driver.implicitly_wait(10)
resp_html = driver.execute_script("return document.documentElement.outerHTML")
sli_ele = driver.find_element(By.XPATH, '//span[@id="nc_1_n1z"]')
if sli_ele.is_displayed():
ActionChains(driver).click_and_hold(on_element=sli_ele).perform()
ActionChains(driver).move_by_offset(xoffset=260, yoffset=0).perform()
time.sleep(2)
ActionChains(driver).pause(0.5).release().perform()
time.sleep(2)
if __name__ == '__main__':
url = 'qwertyuiopasdfghjkl;zxcvbnm,'
driver = drivers()
driver.get(url)
res = driver.execute_script("return document.documentElement.outerHTML")
resp_url_list = res.xpath('//div[@class="wow zoomIn centerList el-col el-col-12"]/a/@href')
print(resp_url_list)
driver.quit()