Python爬虫自动刷“问卷网”问卷(不锁IP)

大学很多项目都会要求征集问卷,但很难找到渠道迅速收集大量样本,如果是自己通过“问卷网”设计的问卷可以在设置不锁IP(默认情况)下用本方法快速刷取大量样本,且能保证问卷结果满足自身项目需求。

即使没有了解过爬虫,稍有python基础看过本程序后相信都能正常使用。

如果这篇博客对你有帮助还请点赞、留言、分享

源代码链接:源代码链接


本程序使用的是谷歌浏览器驱动,附上我使用的驱动资源:ChromeDriver.exe

如果没有谷歌浏览器也可以下载ie/火狐等其它驱动,驱动必须与本地浏览器版本匹配,再对程序稍作修改即可。


我程序中刷的问卷由问卷网编写,链接:我的问卷链接

建议与程序对应查看方便理解,再按自己的问卷稍加修改即可(注意漏选等问题,会导致问卷提交失败,不建议要太多填空的问卷)


option.add_argument('headless')

driver = webdriver.Chrome(executable_path=path,options=option)

这里去除options可以在运行程序时弹出谷歌浏览器界面,方便查看爬虫运行的各个动作,确认无误后再加上可以方便后台自动刷问

path=r"E:\PyCharm_workspace\pachong_1\chromedriver.exe"

path填写的是你下载的浏览器驱动的位置

url填写自己的问卷界面的链接

程序中for index,answers in enumerate(questions):即开始遍历问卷中的每道题目,if index=...即限制对应序号的题目进行特殊操作,例如限制选项范围和数量等

random.randint(0, 3)即生成0-3的随机数,原来随机的选择选项,范围可以自己调节


个人建议,可以在程序中按照自己的需求直接预先选好每道题的答案,再设置刷问卷的次数即开始运行

如要丰富数据,则修改预设答案和提交次数,程序开始运行代码

也可以把代码复制多份,同时运行,效率翻倍


 完整代码如下:

from selenium import webdriver
import random
import time
option = webdriver.ChromeOptions()
option.add_argument('headless')
url = 'https://www.wenjuan.com/s/yYFBf2I/'
t = 200
# 设置提交问卷次数
path=r"E:\PyCharm_workspace\pachong_1\chromedriver.exe"
for times in range(t):
    driver = webdriver.Chrome(executable_path=path,options=option)
    driver.get(url)
    # 定位所有的问卷问题
    questions = driver.find_elements_by_css_selector('.matrix')
    for index,answers in enumerate(questions):
        # 定位所有问卷问题选项
        answer = answers.find_elements_by_css_selector('.icheckbox_div')
        # 定位需要填写文字的选项,并填入相关内容
        # if not answer:
        #     blank_potion = answers.find_element_by_css_selector('.blank.option')
        #     blank_potion.send_keys('没有')
        #     continue
        if index == 3 or index==4:
            choose_ans=answer[random.randint(0,4)]
            choose_ans.click()
            time.sleep(random.randint(2, 5))
        elif index==6 or index==7:
            choose_ans = answer[random.randint(0, 3)]
            choose_ans.click()
            time.sleep(random.randint(2, 5))
        elif index==5:
            for i in range(1,random.randint(1,3)):
                choose_ans = answer[random.randint(0, 5)]
                choose_ans.click()
                time.sleep(random.randint(2, 5))
        else:
            choose_ans = random.choice(answer)
            choose_ans.click()
            time.sleep(random.randint(2, 5))
    subumit_button = driver.find_element_by_css_selector('#next_button')
    subumit_button.click()
    print('已经成功提交了{}次问卷'.format(int(times)+int(1)))
    # 延迟问卷结果提交时间,以免间隔时间太短而无法提交
    time.sleep(8)
    driver.quit()

 

你可能感兴趣的:(爬虫,python,chrome,selenium)