作为开发人员,不论出于什么原因,都是有需求才有功能,才有我们描绘蓝图的机会或动力
承接上篇【python爬取软考每日一练试题存入数据库】的源码分享,这次着重开发思路和过程
爬取试题的起因(可略过)
之前总以为即使没有较高的学历,有能力,有学习力就可以了。可是,实际情况,当作为父母后,面临孩子上学,要积分的硬性要求,我又踏上了考试的征途。软考,作为码农,说这是对我们的赏赐都不为过。利用碎片化时间去刷试题,于是找到了希赛网的每日一练,但是,对我而言不太方便,于是有了爬取试题的冲动
目标网页分析【流程】
1、选择你感兴趣的科目,做一套每日一练的考试模式的试题,然后提交,跳转到试题分页页面。这个流程下来,试题分析页面就是我们最终要的数据包含试题、答案、分析。
2、我感觉爬取数据,定位目标数据是第一步,也是整个python运行结果后的最后一步。按照访问页面层层递进,得到:科目每日一练列表,有分页-》开始做题(继续做题)-》选择考试模式-》点击我要交卷-》每日一练试题分析列表
目标网页列表数据分析
++打开https://www.educity.cn/tiku/dp100110011003-1.html列表页面++
多次点击分页对比url变化:
https://www.educity.cn/tiku/dp100110011003-2.html
https://www.educity.cn/tiku/dp100110011003-3.html
https://www.educity.cn/tiku/dp100110011003-4.html
可得到页数page的位置
浏览器F12打开控制台:
首选选择Network,因为我更偏向于json文件
点击clear清除记录,然后F5刷新得到加载的所有资源列表
除去各种图片、html、js逐个点击其他文件,同时选中preview,最后发现,“.do”文件是它的接口文件,但是没有该列表的json数据,不要着急
然后选择elements查看源码视图选中每日一练
分析div层级结构,找到特征,为xpath做准备
经过以上步骤,我们初步可以确定列表特性
div的class="ecv2_tikucom_doItem clearfix"里面包含【每日一练】标题和查看每日一练的url
xpath的路径如下:xpath("//div[@class='ecv2_tikucom_doItem clearfix']")双斜线用的是相对路径
关于url,有两种情况
<a href="javascript:;" data-accessid="/tiku/dp30022897" data-id="30022897" data-testid="5741829" data-subcode="100110021009" class="ecv2_btn_kszt jixuzuoti">继续做题</a>
<a href="/tiku/dp30026512.html" target="_blank" class="ecv2_btn_kszt">开始做题</a>
所以在我们获取url的时候要分两种情况,分别取‘data-accessid’和‘href’的值
a = v.xpath(".//a//@href")[0]
if (a == 'javascript:;'):
a = v.xpath(".//a//@data-accessid")[0]
确定分页page的位置
url= "https://www.educity.cn/tiku/dp100110011003-{}.html".format(page)

本文分享了使用Python爬取希赛网软考每日一练试题的思路和过程,包括目标网页分析、分页URL变化的观察以及接口文件的查找,为后续爬虫开发打下基础。
712





