最近在搞软件工程课程设计,做了一个在线考试系统,为了弄到题库数据,简单利用了python中的selenium库实现对python123平台自动登录并获取相应的选择试题。

实现自动登录并获取题目

只针对了自己所做过的选择题进行爬取,然后把所得数据存储在excel表格中。

from time import sleep
from selenium.webdriver import Chrome
import csvdatelist = []def get_element():web.get("https://www.python123.io/index/login")uername = web.find_element_by_xpath('//*[@id="links"]/div[1]/div[2]/div/div[1]/div[1]/div/div[1]/div/div[1]/div[2]/form/div[1]/div/input')passworld = web.find_element_by_xpath('//*[@id="links"]/div[1]/div[2]/div/div[1]/div[1]/div/div[1]/div/div[1]/div[2]/form/div[2]/div/input')uername.send_keys('******')  # python123官网的用户名passworld.send_keys('******')  # python123的账户密码login = web.find_element_by_xpath('//*[@id="links"]/div[1]/div[2]/div/div[1]/div[1]/div/div[1]/div/div[1]/div[2]/div[3]/div[1]/button')login.click()sleep(2)#选择课程web.find_element_by_xpath('//*[@id="app"]/div/div[1]/div[1]/div[1]/nav/div[2]/div[1]/a[2]').click()sleep(2)#选择对应的课web.find_element_by_xpath('//*[@id="app"]/div/div[1]/div[1]/div[2]/section/div/div[1]/div[2]/div/div/div/figure/img').click()sleep(2)#选择课程任务web.find_element_by_xpath('//*[@id="app"]/div/div[1]/div[1]/div[2]/section/div/div/div[2]/div/div/div/div/div/div/div[1]/div/div/div/div[1]/div[3]/a[2]').click()sleep(2)def parse_questionlist(datelist):#获取题目信息list = web.find_elements_by_css_selector('div[class="card-content is-clipped"]')for li in list:date = []timu = li.find_element_by_css_selector('div[class="mce-content-body"]').text  # 题目信息#print(timu)date.append(timu)xuanxiang = li.find_elements_by_css_selector('div[class="content content"]')for xuan in xuanxiang:Choose = xuan.find_element_by_css_selector('div[class="mce-content-body"]').text  # 选项date.append(Choose)#print(Choose)answer = li.find_element_by_css_selector('div.answers.rightanswer > span:nth-child(4)').text  # 答案date.append(answer)#print(answer)datelist.append(date)return datelistdef piliang_sava():#每个测试对应的selectornum = ['//*[@id="app"]/div/div[1]/div[1]/div[2]/section/div/div/div[2]/div/div/div/div/div[2]/div[2]/div/div[1]/div','//*[@id="app"]/div/div[1]/div[1]/div[2]/section/div/div/div[2]/div/div/div/div/div[2]/div[2]/div/div[2]/div','//*[@id="app"]/div/div[1]/div[1]/div[2]/section/div/div/div[2]/div/div/div/div/div[2]/div[2]/div/div[3]/div','//*[@id="app"]/div/div[1]/div[1]/div[2]/section/div/div/div[2]/div/div/div/div/div[2]/div[2]/div/div[4]/div','//*[@id="app"]/div/div[1]/div[1]/div[2]/section/div/div/div[2]/div/div/div/div/div[2]/div[2]/div/div[5]/div','//*[@id="app"]/div/div[1]/div[1]/div[2]/section/div/div/div[2]/div/div/div/div/div[2]/div[2]/div/div[6]/div','//*[@id="app"]/div/div[1]/div[1]/div[2]/section/div/div/div[2]/div/div/div/div/div[2]/div[2]/div/div[7]/div','//*[@id="app"]/div/div[1]/div[1]/div[2]/section/div/div/div[2]/div/div/div/div/div[2]/div[2]/div/div[8]/div']# 退出for i in range(0,8):# 选择测试sleep(5)web.find_element_by_xpath(num[i]).click()sleep(5)# 查看选择题web.find_element_by_xpath('//*[@id="group-wrapper"]/div/div[2]/div[1]/div/a[4]').click()parse_questionlist(datelist)sleep(5)web.find_element_by_xpath('//*[@id="app"]/div/div[1]/div[1]/div[2]/section/div/div/div[1]/div/div/div/ul[2]/li[2]/a').click()return datelistdef sava_data(datelist):f = open('python123题库爬取.csv','w',encoding='utf-8-sig',newline="")csv_write = csv.writer(f)csv_write.writerow(['题目', '选项A', '选项B', '选项C', '选项D','答案','题目状态'])for data in datelist:csv_write.writerow([data[0], data[1], data[2], data[3], data[4],data[5],'1'])f.close()if __name__ == '__main__':web = Chrome()web.maximize_window()get_element()tiku = piliang_sava()#print(tiku)sava_data(tiku)

ps:初学python,可能有些地方不足,希望大家指点!

python实现对python123平台题库爬取相关推荐

  1. Python网络爬虫与信息提取(17)—— 题库爬取与整理+下载答案

    前言 上一节实现了题目的整理,没整理答案是不完整的,所以这一节加上答案的爬取. 上一节地址:Python网络爬虫与信息提取(16)-- 题库爬取与整理 效果 思路 爬答案有点难搞,像这种题库的答案都是 ...

  2. python画罗小黑_Python3+requests库爬取豆瓣《罗小黑战记》评论

    贴一下抓到的评论,最后几条的 本渣是在校学生(非计算机相关),今年上半年接触Python,然后暑假开始学着写爬虫. 新手,本文如有错误,谢谢指正. 这个爬虫开始思路有点乱,现在比较清晰了 思路:req ...

  3. Python爬虫学习 6 —— 使用bs4库爬取大学排名

    前面学了如何使用beautifulsoup,现在来尝试简单的爬取:中国大学排名 一.准备 查看Robots协议:robots协议 功能描述 输入:大学排名的url链接 输出:大学排名信息(排名,大学名 ...

  4. Python 爬虫进阶篇-利用beautifulsoup库爬取网页文章内容实战演示

    我们以 fox新闻 网的文章来举例子,把整篇文章爬取出来. 首先是标题,通过结构可以看出来 class 为 article-header 的节点下的 h1 里的内容即是标题,通过 string 可以获 ...

  5. 【Python爬虫】2022年数学建模美赛B题数据爬取

    2022年数学建模美赛B题数据爬取 背景 2022年的美赛刚刚落下帷幕,该题的一个主要难点在于数据的获取.很多人无法找到有效的数据,或者是无法获取数据. 比如找到了如下米德湖的水文数据,但是发现并没有 ...

  6. python爬虫学习(三):使用re库爬取淘宝商品,并把结果写进txt文件

    第二个例子是使用requests库+re库爬取淘宝搜索商品页面的商品信息 (1)分析网页源码 打开淘宝,输入关键字"python",然后搜索,显示如下搜索结果 从url连接中可以得 ...

  7. Moodle平台题库建设技术

    Moodle平台题库建设技术 简述 GIFT格式特点及支持的题目类型 一.开始制作 1.判断题 2.单选题 3.多选题 4.数值题 5.简答题 6.描述性文本 7.匹配题 二.题目选项 行注释 题目名 ...

  8. 使用Python实现对excel数据的处理

    前言 **使用Python实现对excel数据的处理, 预先知识简单介绍 xlrd中 # File_Path是Excel路径,打开Excel工作蒲 workbook = xlrd.open_workb ...

  9. python获取网页json返回空_Python用requests库爬取返回为空的解决办法

    首先介紹一下我們用360搜索派取城市排名前20. 我们爬取的网址:https://baike.so.com/doc/24368318-25185095.html 我们要爬取的内容: html字段: r ...

最新文章

  1. java重载和重载的区别
  2. 端云互联 3.0 击破云原生开发的痛点
  3. 英语口语-文章朗读Week9Thursday
  4. 3dmax批量导入obj_ArcGIS 与 3DMax 结合建模
  5. MEF董事、中国电信云计算中心主任赵慧玲:MEF第三类网络
  6. 今天 Java 14 正式发布了!放弃 Java 8 行吗?
  7. 广州黄埔香雪地铁口总价35万一套。
  8. mysql 建库建表模板 权限管理
  9. ios 画带有箭头的线_iOS 箭头类型视图的几点心得
  10. 仅15%的L2智能驾驶搭载DMS,「安全」背后的市场爆发在即
  11. IDE、SATA、SCSI、SAS、FC、SSD硬盘类型介绍
  12. 十七节 samba nfs共享
  13. c语言不用死等的延时函数,matlab延时函数怎么写
  14. win7下搭建Nginx简单图片服务器
  15. MySQL数据库相关资料
  16. MATLAB/Python MK检验程序
  17. oracle导出一半报1046,Oracle 数据库1046事件
  18. Vulnhub-Zico2靶机实战
  19. 换ip地址除开虚拟服务器,GoDaddy虚拟主机更换IP地址和更换主域名绑定的方法
  20. Android 蓝牙Wifi配网

热门文章

  1. SQL语句case函数
  2. 防火墙 Hillstone Networks SA-5040
  3. Geode 系列学习
  4. MFC中Create()函数的用法
  5. 智慧城市“双引擎”:城市创新活力与市民宜居体验
  6. 大数据DMP画像系统
  7. 高速缓冲存储器cache介绍
  8. 游戏,角色,及属性方法总结
  9. 类方法和静态方法的区别
  10. 电脑删除的照片如何恢复