python selenium自动化填写问卷星

Posted 汤米先生

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python selenium自动化填写问卷星相关的知识,希望对你有一定的参考价值。

文章目录

一. 介绍

本python脚本主要功能是自动填写问卷星,适合大量的问卷星填写需求。
问卷星有智能检测自动化程序的功能,所以我加了一些规避检测的代码,除此之外,问卷星还具有检测IP地址的功能,如果只用当前ip填写 问卷,很容易会被发现,为了解决这个问题,我设置了代理ip伪装,问卷星还会检测填写问卷的时间,适当的使用sleep()能使填写的问卷更加逼真有效。

二. 配置

  1. 谷歌游览器自动化插件,选择适合自己游览器版本的插件下载,放到和python脚本同意目录下。

  2. 代理IP地址
    下面给出一个免费获取代理IP的网站 :https://www.kuaidaili.com/free/
    免费代理IP好多是失效的,需要筛选才能使用
    我使用了 下面这个代理IP

    填写问卷后,登录问卷星平台,查看填写记录(IP有些偏差,但确实是访问成功了,ip地址也变了)

三. Python脚本代码


import random
from time import sleep
from lxml import html
from my_fake_useragent import UserAgent
from selenium import webdriver
from selenium.webdriver.chrome.options import Options


etree = html.etree

chrome_option = Options()
chrome_option.add_argument('--headless')
chrome_option.add_argument('--disable-gpu')
while True:
    ua = UserAgent(family='chrome')
    #请求头自动随机获取
    user_agent = ua.random()
    headers1 = "User-Agent":  user_agent
    url = 'https://www.wjx.cn/vj/PWcHjHc.aspx'
    # referer = 'https://www.csdn.net/'
    driver_path = 'chromedriver.exe'
    opt = webdriver.ChromeOptions()
    #代理ip伪装,如果要伪装ip需要先找到一个能用的高匿名代理IP,否则页面打不开
    opt.add_argument("--proxy-server=http://14.20.235.139:9797")
    opt.add_experimental_option('excludeSwitches', ['enable-automation'])
    opt.add_experimental_option('useAutomationExtension', False)
    opt.add_argument('--user-agent=%s' % user_agent)
    opt.add_argument('--headers=%s' % headers1)
    # opt.add_argument('--referer=%s' % referer)
    # opt.add_argument('--user-agent=%s' % cookie)
    # 实现无可视化界面
    # opt.add_argument('--headless')
    # opt.add_argument('--disable-gpu')
    # 实现规避检测
    opt.add_experimental_option('excludeSwitches', ['enable-automation'])
    browser = webdriver.Chrome(executable_path=driver_path,options=opt)
    browser.execute_cdp_cmd('Page.addScriptToEvaluateOnNewDocument',
                               'source': 'Object.defineProperty(navigator, "webdriver", get: () => undefined)')

    #根据问卷设置自动填写样式
    browser.get(url)
    logo = browser.find_element_by_xpath('//*[@id="q1"]').send_keys("你好")
    browser.find_element_by_xpath('//*[@id="q2"]').send_keys("小明")
    i = 3
    while i <= 14:
        c = random.randint(1, 2);
        c1 = '//*[@id="divquestion' + str(i) + '"]/ul/li[' + str(c) + ']/label'
        browser.find_element_by_xpath(c1).click()
        i = i + 1
    browser.find_element_by_xpath('//*[@id="submit_button"]').click()
    browser.find_element_by_xpath('//*[@id="alert_box"]/div[2]/div[2]/div[2]/button').click()
    browser.find_element_by_xpath("//div[@id='captcha']").click()
    sleep(5)
    browser.close()



四.运行结果展示

以上是关于python selenium自动化填写问卷星的主要内容,如果未能解决你的问题,请参考以下文章

还在为写调查问卷发愁的你赶快来看看这个自动填写问卷(问卷星版)

python实现问卷星自动填写(可以跳过智能验证)

js自动填写问卷星

SC-MY限定让填写问卷星成为自动化!

用selenium自动填写调查问卷

通过Python实现自动填写调查问卷