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

python 复制代码
! pip install selenium
! pip install pyautogui

安装成功

3.2 调用谷歌浏览器

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

python 复制代码
		# 填写链接
        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 进行网页操作

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

python 复制代码
# 两个功能一致,使用这个代码找到对应的代码,click()即可,和js基本类似,只是部分语法不一样
# python里面的写
sinPro = driver.find_elements(By.CSS_SELECTOR, f'.jqradio')
# js里面的
document.querySelectorAll(".jqradio")
python 复制代码
# 引入相关模块
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

还有一个找不到了,看到了,可以联系我

相关推荐
新网企兴2 分钟前
2026年陕西做GEO推广,找新网企兴解决获客难题
python·搜索引擎
zhifou12345612 分钟前
java 17升级安装
java·开发语言
青 春 记 忆13 分钟前
LeetCode 142. 环形链表 II|Python 解法详解
python·leetcode·链表
for_ever_love__16 分钟前
python基础语法学习: 面向对象的三大特性
开发语言·python·学习
Spider赵毅35 分钟前
Python爬虫踩坑实录:BeautifulSoup使用中的高频问题排查
爬虫·python·beautifulsoup
不会代码的小猴1 小时前
7. JSON
开发语言·c++·笔记·qt·算法·json
沫璃染墨1 小时前
《Qt从零入门系列(六):信号与槽进阶——从多种连接方式到Lambda表达式》
开发语言·c++·qt·代码规范·设计规范·qt5
怪奇云呼军1 小时前
知识库也会注入指令?闪电智能VoiceAgent 如何防住 Prompt Injection
人工智能·python·算法·云计算·音视频
ZJU_统一阿萨姆2 小时前
【算子开发】环境搭建与第一个CUDA程序
开发语言·人工智能·系统架构
Evand J2 小时前
【MATLAB例程,车联网8】MPC网联车辆节能跟驰控制:速度跟踪、间距约束与能耗优化。附MATLAB完整代码的下载链接
开发语言·matlab·车联网·调度·mpc·节能·车辆控制