通过selenium完成问卷调查

通过selenium完成问卷调查

案例目的:

介绍对问题和问题选项所在的节点进行xpath定位,以及实现鼠标点击操作。

案例实现的功能:

快速自动完成问卷调查

首先分享一个问卷调查的网址:
https://www.wjx.cn/jq/37766520.aspx

下面开始案例的分析:

打开网址我们发现一共有21个问题,第一个问题时比较特殊,因为只包含一两个选项。因此,我们在可以先完成前三个问题,然后剩下的问题统一处理。那么我们的程序里会出现if判断语序。
在这里插入图片描述

其次就是重点,怎样对问题的选项进行定位和点击呢?

大家会发现,我们的右键检查没法用了,因为没法点击右键。
解决办法:

按F12键进入检查,点击左上角带箭头的小方框,然后再点击问题的选项,就会进入到其所在的位置。如下图:
在这里插入图片描述
注意:我们定位的是代表每个选项的标签,而不是选项的文本。

例如,我们定位到选项“男”,对应的并不是下面的label文本男,而是男这个选项对应的标签a。而且通过定位选项女所在的位置,我们发现了一个规律:
也就是图上标注的第一个问题的第一个选项的rel属性为q1_1,第一个问题的第二个选项则为q1_2。因此,我们可以判定“q第m个问题_问题的第n个选项”。基于这个规律,我们就可以定位到每个问题和选项对应的标签位置。

找到了问题标签的规律,还差一个就是提交选项

在这里插入图片描述
对于提交选项对应的节点位置,我们可以通过id="submit_button"进行定位。

所有标签位置已经定位完毕,剩下就是点击了。

如何点击就简单了,就是一个click()就能搞定了的。

分析完毕,上代码:

from selenium.webdriver import Chrome
import random

if __name__ == '__main__':
    # 创建浏览器对象
    chrome = Chrome()
    # 在网址栏输入url,进入页面
    chrome.get('https://www.wjx.cn/jq/37766520.aspx')
    # 最大化页面
    chrome.maximize_window()
    # 队第一个问题进行特殊处理
    click_obj = chrome.find_element_by_xpath(f'//a[@rel="q1_{random.randint(1,2)}"]')
    click_obj.click()
    # 选择剩下的几个规律相同的选项
    for i in range(2,22):
        click_obj = chrome.find_element_by_xpath(f'//a[@rel="q{i}_{random.randint(1,4)}"]')
        click_obj.click()
    # 最后的提交,可以通过id进行识别
    submit_obj = chrome.find_element_by_id('submit_button')
    # 点击提交
    submit_obj.click()

执行结果如下:

在这里插入图片描述
最后出现了个小插曲,这个案例是我上一年讲的,但是今年却出现了只能验证。应该是对selenium进行的一个反爬手段,我试着解决怎样处理这个验证。此次案例主要是对整个过程的了解,谢谢大家的阅读。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夜的乄第七章

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值