selenium用法详解,python中selenium是什么意思

  selenium用法详解,python中selenium是什么意思

  因为前文在前言中已经涉及到了登录智慧校园的验证码处理,所以本文将跳过这个过程。如果登录时遇到验证码,请参考本文。其实第一次用验证码,可以在浏览器里登录一次,然后用python代码模拟登录,验证码就没了。因为CQCET智慧校园验证码是有限条件弹出来的!

  上一次智能校园自动评教用硒库模拟人点击浏览器。虽然比人工评教快,但效率还是不高。所以我想尝试重新写一份没有硒的评教方案。物有所值,我终于成功了!

  一、向导包导入JSON导入请求的准备从fake _ UserAgent导入uuid导入用户代理#随机生成用户代理生成uuid和UA #随机生成uuiduuid=uuid.uuid4()#随机UA headers={ user-agent :user agent()。random}二、登录智慧校园。这个过程不会重复太多,直接去代码!

  #登录智慧校园def Log in():Log in _ URL= 3358sso.cqcet.edu.cn/uaa/login _进程 data={ 类型:1,设备id: uuid,用户名: 19030 * * * ,密码: XL * * * * 5 , img _ code : } Session=requests . Session()Session . post(URL=Log in _ URL,headers=headers,data=data)返回会话注意:用户名:账号密码:密码

  3.进行教学评估操作1。进入评教页面观察评教(学生)点击评教页面对应的网站,虽然学生可以看到,但并不是真正的评教页面对应的网站。所以要查看网络中真实的评教页面对应的网站。按F12查看网页,然后按照下图所示的步骤找到真正的评教网站。

  2.抓取教学评价时发起url请求操作。在此教学评估页面上按F12,调用开发工具并转到网络栏,然后评估一节课。然后你会发现教学评价的url请求操作,如下图所示!

  所以我们只需要用python模拟同样的请求操作就可以完成教学评价了!但这是一个需要携带数据的post请求,那么问题来了,数据应该从哪里获取呢?

  #以下列出部分所需数据advice:none XH:1903011753 XM:Xuekkdm:SKJSJGH:200720020 skjsmc:班主任姓名备注:none年份:2020-2021 term:2 Weekly:Weekly Taskid:202020 * * * *您可以在其对应的url发起post请求以获取所需信息。

  代码实现:

  #教学评价页面def evaluation(session):session . get(URL= 3358ossc.cqcet.edu.cn/XG/teaching/student/xskb data={ pagesize : 10 , pagenum: 1 , isAsc: asc , xnxq: 2020-2021-2 ,Weekly : 16 } eval _ jsons=JSON . loads(session . post(URL= 3358ossc.cqcet.edu.cn/XG/teaching/student/xskb/list, data=data)。Text) Add _ , id: teach _ situation , value: 5},\ {name :你的学习怎么样? id: learn _ harvest , value: 5},\ {name :学科管理怎么样? id :学科,值: 5},\ { 名称:课堂互动怎么样? id: interaction , value: 5},\ {name :课后交流怎么样? id: communicate , value: 5}], advice: none , remark: none ,KKDM : } for eval _ JSON in eval _ jsons[ rows ]:is flag=eval _ JSON[ complete ]if is flag:print(eval _ JSON[ skj SMC ]老师的《 + eval_json[kcmc] + 》已求值!)else:add _ data[ xh ]=eval _ JSON[ xh ]add _ data[ XM ]=eval _ JSON[ XM ]add _ data[ skjsjgh ]=eval _ JSON[ skjsjgh ]=eval _ JSON[ skjsmc ]=eval _ JSON[ skjsmc ]add _ data[ year ]=eval _ JSON[ xn ]add _ data[ term ]=eval _ jstext)Print(session . post(URL=eval _ add _ URL,data=add _ data)。正文)3。我遇到的问题到这里就结束了,但是我在帖子里要网址的时候一直失败,返回{msg :运行时异常:错误解析new , code:500},把我搞糊涂了。最后我用fiddler抢到了包,对比了浏览器post请求和python代码发起的post请求的区别,如下图所示:

  你会发现浏览器post请求中的 evaluationProject 对应的value值是一个列表。在python的post请求中,‘evaluation project’对应多个value值。本来值的应该是单子,但是活的被打散了!因为当时post请求携带的数据是这样写的,如下:

  EvaluationProject: [{name :老师教的怎么样? id: teach _ situation , value: 5},{name :学习怎么样? id: learn _ harvest , value: 5},{name :学科管理怎么样? id :学科,值: 5},{ 名称:课堂互动怎么样? id: interaction , value: 5},{name :课后交流怎么样? id :id : communicate , value: 5}]: 5}],直接让evaluationProject与一个列表形成一个键值对。找到原因后,我试着把这个列表放到字符串中,但还是报错了。因为我忘了,一个字符串换行符需要用一个连续的行符连接,最后改成下面这个就成功了!

  评估项目:[{name :老师教得怎么样?, id: teach _ situation , value: 5},\ {name :你的学习怎么样? id: learn _ harvest , value: 5},\ {name :学科管理怎么样? id :学科,值: 5},\ { 名称:课堂互动怎么样? id: interaction , value: 5},\ {name :课后交流怎么样? id :id : communicate , value: 5}]: 5}]。四、总结一下自动评教的实现并不难,主要是有些细节困扰我很久了,真正决定成败的是细节。我也记性很好。当python中的字符串是多行时,我必须使用行继续符\!

  希望这篇文章能给你启发。如果你有什么好的建议,请在评论区告诉我或者发邮件给我!

  最后,今天是端午节。祝大家端午节健康,记得吃粽子!下次再见!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: