python selenium自动化填写问卷星
Posted 汤米先生
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python selenium自动化填写问卷星相关的知识,希望对你有一定的参考价值。
文章目录
一. 介绍
本python脚本主要功能是自动填写问卷星,适合大量的问卷星填写需求。
问卷星有智能检测自动化程序的功能,所以我加了一些规避检测的代码,除此之外,问卷星还具有检测IP地址的功能,如果只用当前ip填写 问卷,很容易会被发现,为了解决这个问题,我设置了代理ip伪装,问卷星还会检测填写问卷的时间,适当的使用sleep()能使填写的问卷更加逼真有效。
二. 配置
-
谷歌游览器自动化插件,选择适合自己游览器版本的插件下载,放到和python脚本同意目录下。
-
代理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自动化填写问卷星的主要内容,如果未能解决你的问题,请参考以下文章