赞
踩
from selenium import webdriver
import random
解析:这里面的第一行是主要的库,使用random这个库主要是为了实现随机选择的问题。因为我们所做的题目里面是有选择题的,我们使用random这个库来实现在多个选项里面选一个的方法。
driver = webdriver.Chrome()
driver.get('https://www.wjx.cn/jq/22452252.aspx')
input()
附:这个地方注意,直接运行的话是会报错的,因为各个浏览器都是需要驱动的,像大家看了代码之后肯定都发现了,题主所使用的是谷歌浏览器,因为调用的是Chrome这个函数,我们就需要一个浏览器工具来帮我们打开浏览器。首先我们先下载一个插件,由于题主使用的是谷歌浏览器,所以下载的是谷歌浏览器的插件。怕小伙伴找不到,所以在这里贴一个链接:
谷歌浏览器工具链接
找到自己的谷歌浏览器版本下载就可以啦。谷歌浏览器的查看方式为:打开浏览器->…->设置->关于Chrome:
下载对于的工具后,解压,打开放在Python的目录下面,如下图所示:
把这个exe放在python的目录下面,就可以实现打开浏览器的功能了(上面代码里面的input是没有用的,作用是为了让浏览器不会关闭的太快,可以看到效果)。
我们可以看到,我们的每个题目,都位于一个div标签里面,所以我们先定位到每个标签。使用get函数,获得对应的标签。
from selenium import webdriver
import random
driver = webdriver.Chrome()
driver.get('https://www.wjx.cn/jq/22452252.aspx')
answers = driver.find_elements_by_css_selector('.div_question')
想看效果的童鞋,可以printf一下,就可以看到结果了。
from selenium import webdriver import random driver = webdriver.Chrome() driver.get('https://www.wjx.cn/jq/22452252.aspx') answers = driver.find_elements_by_css_selector('.div_question') for answer in answers: try: ####先滑到标签再去点击 driver.execute_script("arguments[0].scrollIntoView();",answer) ### 找到标签 ans=answer.find_elements_by_css_selector('li') if not ans: text=answer.find_element_by_css_selector('textarea') text.send_keys('没有') continue lsans=random.choice(ans) lsans.click() except Exception as e: print(e)
解释:首先我们获得了answer之后,我们得避免一些问题导致我们的代码出现红字,于是我们使用try来避免报错(这个原因是,有些题目我们不能作答,但是使用死的代码会发生卡死的现象。)举个简单的例子,当我们遇到一个分叉的时候,比如有的题目,你选了否就会答第五题,选了是就会答第六题,这样子虽然我们会获取到五和六的题目的div,但是却不能两者都答,如果不使用try的话,会导致代码报错不能运行,我们使用try这样子就可以保持即使这题答不了,也只会把异常抛出,然后我们依然会往后做(这样子就从另一个角度来解决了分叉的问题)。
发现填空题的标签为textarea,所以我们单独为他补一个if,专门用来对付填空题,if不是li标签,我们就来寻找到textarea,然后填入没有,这里面的text.send_keys(‘没有’)就是起到填空的功能,然后如果不是填空题的话,我们就使用random函数的choice来随机产生一个结果,进行选择,这里的lsans.click()是起到点击选项的作用。
from selenium import webdriver import random driver = webdriver.Chrome() driver.get('https://www.wjx.cn/jq/22452252.aspx') answers = driver.find_elements_by_css_selector('.div_question') for i in range(5): for answer in answers: try: ####先滑到标签再去点击 driver.execute_script("arguments[0].scrollIntoView();",answer) ### 找到标签 ans=answer.find_elements_by_css_selector('li') if not ans: text=answer.find_element_by_css_selector('textarea') text.send_keys('没有') continue lsans=random.choice(ans) lsans.click() except Exception as e: print(e) am=driver.find_element_by_css_selector('#submit_button') am.click() driver.quit()
附:这个地方,我们下面也是寻找,我们寻找一个id叫submit_button的id(这个id就是提交按钮的id,如下图所示)。寻找到之后,我们点击它,也就是am.click(),然后再关闭浏览器driver.quit(),然后上面的循环继续。题主在这里设置的是五次循环,想快速填写的可以设置的多一点。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。