python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > python 网页自动操作

python调用chrome实现网页自动操作过程

作者:+++.

这篇文章主要介绍了python调用chrome实现网页自动操作,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧

一. 内容简介

python调用chrome实现网页自动操作。

二. 软件环境

2.1vsCode 2.2Anaconda

version: conda 22.9.0

2.3代码

链接:

三.主要流程

3.1 下载驱动和插件

调用谷歌浏览器,需要下载浏览器驱动(https://registry.npmmirror.com/binary.html?path=chromedriver/),下载对应的版本,最新的里面没有,网上找一下就可以了,谷歌或者csdn,
然后安装 selenium

! pip install selenium
! pip install pyautogui

安装成功

3.2 调用谷歌浏览器

这个驱动没有路径,好像也可以运行,我只指定了网址,浏览的exe路径,就没了

# 填写链接
        url_survey = 'https://www.wjx.cn/vm/ev6IfcA.aspx'
        options = webdriver.ChromeOptions()
        options.add_experimental_option('excludeSwitches', ['enable-automation'])
        options.add_experimental_option('useAutomationExtension', False)
        # 谷歌浏览器exe位置
        options.binary_location = r"C:\Program Files\Google\Chrome\Application\chrome.exe"
        # 是否要启动页面
        # options.add_argument("--headless")  # 启用无头模式
        # GPU加速有时候会出bug
        options.add_argument("--disable-gpu")  # 禁用GPU加速
        options.add_argument("--disable-blink-features=AutomationControlled")
        driver = webdriver.Chrome(options=options)
        driver.execute_cdp_cmd('Page.addScriptToEvaluateOnNewDocument',
                            {'source': 'Object.defineProperty(navigator, "webdriver", {get: () => undefined})'})
        # 启动要填写的地址,这就启动浏览器
        driver.get(url_survey)
		# 这是关闭浏览器
        driver.quit()#停止

启动成功

3.3 进行网页操作

需要注意的就是,然后就是按自己的需求写就好了,有啥其他用到的,以后再补充,现在就用到这一个

# 两个功能一致,使用这个代码找到对应的代码,click()即可,和js基本类似,只是部分语法不一样
# python里面的写
sinPro = driver.find_elements(By.CSS_SELECTOR, f'.jqradio')
# js里面的
document.querySelectorAll(".jqradio")
# 引入相关模块
from selenium.webdriver.common.by import By
from selenium import webdriver
#随机数产生
import random 
#延时
import time
import pyautogui
#单选题
def single(driver):
# 假设有10个单选题
    for j in range(1, 18):
        # 每个单选题所在的位置
        sinPro = driver.find_elements(By.CSS_SELECTOR, f'#div{j}')
        # 每个单选题的答案进行遍历
        for answer in sinPro:
            # 对应每个单选题的选项组合
            ansItem = answer.find_elements(By.CSS_SELECTOR, '.ui-radio') 
            if ansItem:
                random.choice(ansItem).click()
            else:
                ansItem = answer.find_elements(By.CSS_SELECTOR, '.ui-checkbox') 
                selected_items = random.sample(ansItem, random.randint(2, 4))  # 选择两个不重复的元素
                for item in selected_items:
                    item.click()
            # 答题时间间隔
            time.sleep(random.randint(0, 1)/2)
#脚本执行方法
def launch(nums):
    for i in range(0, nums):
        url_survey = 'https://www.wjx.cn/vm/ev6IfcA.aspx'
        options = webdriver.ChromeOptions()
        options.add_experimental_option('excludeSwitches', ['enable-automation'])
        options.add_experimental_option('useAutomationExtension', False)
        options.binary_location = r"C:\Program Files\Google\Chrome\Application\chrome.exe"
        # options.add_argument("--headless")  # 启用无头模式
        options.add_argument("--disable-gpu")  # 禁用GPU加速
        options.add_argument("--disable-blink-features=AutomationControlled")
        driver = webdriver.Chrome(options=options)
        driver.execute_cdp_cmd('Page.addScriptToEvaluateOnNewDocument',
                            {'source': 'Object.defineProperty(navigator, "webdriver", {get: () => undefined})'})
        # 启动要填写的地址
        driver.get(url_survey)
        # 填写选择题
        # single(driver)
        # # 提交按钮
        # end = driver.find_elements(By.CSS_SELECTOR, f'#ctlNext')
        # end[0].click()
        #提交按钮
        time.sleep(4)
        print('已经提交了{}次问卷'.format(int(i) + int(1)))
        driver.quit()#停止
if __name__ == "__main__":
    #填写问卷次数
    launch(4000)

结果如图

四.参考

【python】自动填写问卷星问卷及提交 http://t.csdnimg.cn/aifYa 

到此这篇关于python调用chrome实现网页自动操作的文章就介绍到这了,更多相关python 网页自动操作内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文