怎么用python编程模拟填写问卷,似乎很有难度
发布网友
发布时间:2022-04-21 21:59
我来回答
共1个回答
热心网友
时间:2023-06-22 14:07
有些无意义的问卷作业,真的没有必要。
但是作业既然有了,那就想办法解决它把。
关于IP*的问题,可以使用X-Forwarded-For更换IP。
只会用印象笔记markdown的我,感觉markdown好复杂。
我想做个目录,但是[toc]没反应,...
1$2:表示选择第一问的第二个选项,这是单选题的数据格式
构造url需要submittype, curID, t, starttime, ktimes, rn, hlv, jqnonce, jqsign
经实验,必要的参数如下:
必要参数获取方式:
思路有了,可以开工了。
先定义一个问卷星的类:
ktimes生成函数:
header设置函数:
随机生成IP,如果不换IP,提交多了会提示输入验证码
很少见到x-forwarded-for能有用的时候,问卷星刚好就可以
访问问卷网址,获取response:
通过上面的response获取jqnonce:
由于jqnonce是script里面的一个变量,所以使用正则表达式提取
我更喜欢xpath,但是好像xpath提不出来
通过response获取rn:
通过response获取id
通过jqnonce和ktimes生成jqsign:
通过response获取starttime:
获取starttime的正则表达式我没有获取秒,因为获取秒后会弹验证码
我猜测:
终于把各个参数获取的差不多了,可以生成url了:
url生成好了,我们基本成功了,剩下的工作就比较轻松了
生成需要提交的数据:
万事俱备,只欠东风。
如果response.text为22,则代表失败
会有少数的失败,不知道什么原因
post_data函数:
run函数:
至此我们就可以全自动化的填问卷了,而且不受ip的*
一次填写多个问卷:
运行一下:
结果:
红色圈出来的22代表失败,其他的代表成功
问卷统计:
好了,该睡觉了😄
如果觉得速度不够快,可以用多线程