前言
问卷星是一个大学生都在用的问卷采集工具,每到期末,朋友圈总会有一大波问卷席卷而来。
可不可以自动填呢,可以的,小编找了一份问卷,使用 python 实现了一下,成功得到了几份问卷。
问卷星的反爬还有点厉害,涉及到无限 debugger。
无限 debugger
问卷链接:
https://www.wjx.cn/m/99634699.aspx
打开链接,打开开发者工具,过了几秒后,就会被打上断电,暂停掉:
点击运行又会跳回这个页面,怎么点都没用,代码都查看不了,这就是无限 debugger,要解决呢,这里介绍两种办法,
第一是最直接简单的,取消断点,但这样做的话自己要打断点调试就不可以了,有局限。
第二种使用 Fiddler 修改网页返回内容过滤掉debugger标签可以破解此套路。
对于问卷星,使用第一种就可以了点击取消断点,再点击运行,就可以检查元素了:
接下来就可以编写问卷填写逻辑了。
填写逻辑
对于此问卷,有多页,都是选择题,对于这种需求首先想到的是 selenium 咯,模拟浏览器自动填写。
另外的思路就是破解提交问卷后的请求,但这种有点难度,就选最直接的方法了。
问卷星的问题虽然有多页,但所有页的所有问题的代码都可以在第一页的代码中看到:
上图中是问题第一页,在这一页,查看源代码,发现问卷的 8 页的代码标签都在这了,所以不需要翻页去查看后面的问题了。
接下来就简单多了,问题就是提取所有页的标签,循环每一页标签,从每一页标签中提取每个问题,再随机选择答案,翻页,最后提交。
核心代码为:
最后运行代码,自动填写后,问卷成功提交:
设置循环次数,这样就可以得到一些问卷,但同一个 ip 次数太多的话就会被验证了,可以换 ip 试试。
源码获取
在公众号“木下学Python”回复“问卷星”即可获取。
END
读者交流群已建立,找到我备注 “交流”,即可获得加入我们~
听说点 “在看” 的都变得更好看呐~
关注关注小编呗~小编给你分享爬虫,数据分析,可视化的内容噢~
扫一扫下方二维码即可关注我噢~
-END-
本文分享自微信公众号 - 木下学Python(zjk_py)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。
来源:oschina
链接:https://my.oschina.net/u/3772410/blog/4776858