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

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

相关推荐
-XWB-3 分钟前
【LLM】使用MySQL MCP Server让大模型轻松操作本地数据库
人工智能·python·自然语言处理
小萌新上大分4 分钟前
SpringCloudGateWay
java·开发语言·后端·springcloud·springgateway·cloudalibaba·gateway网关
PacosonSWJTU1 小时前
python基础-13-处理excel电子表格
开发语言·python·excel
froginwe111 小时前
Perl 条件语句
开发语言
小军要奋进1 小时前
httpx模块的使用
笔记·爬虫·python·学习·httpx
啥都鼓捣的小yao1 小时前
利用C++编写操作OpenCV常用操作
开发语言·c++·opencv
灼华十一1 小时前
Golang系列 - 内存对齐
开发语言·后端·golang
程序媛学姐2 小时前
SpringRabbitMQ消息模型:交换机类型与绑定关系
java·开发语言·spring
努力努力再努力wz2 小时前
【c++深入系列】:类与对象详解(中)
java·c语言·开发语言·c++·redis
Johnny_Cheung2 小时前
字符串、列表、元组、字典
开发语言·python