爬取某笔公考app公基题库的操作

最近在准备上岸,备考中需做大量的练习,手机APP让练习无处不在,但有个缺点,就是每次只能练习10-20道题目,不能用题海战术,海量做题。能不能把网站的题库及解析都弄下来,在本地电脑上做题呢?以下是我的思路:1、分析并爬取手机软件的题库;2、调整好格式存入xls文件中;3、导入PC版可自定义的考试系统中(如教之初考试系统免费版);4、自行设置考试模式,海量练习。

涉及到几个点。

1、关于手机网络数据的分析,我是用Fiddler4进行的分析。

2、关于excel表格的操控,之前想用xlwings模块,后因没装office,用的是wps2013政府阉割版,无法操控,后改用xlrd、xlutils、shutil、os模块自己写了一个excel操纵类对象,发现还是有问题,后卸载阉割版wps,换了wps2016最新版的,就可以操作了。后来也没换xlwings模块了,将就着用自写模块。大坑:xlrd模块好像不支持中文路径,全部换用英文路径,最后再把文件夹及文件名转换成中文的。

3、题库分类保存。

1、Fiddler抓包手机APP的网络请求

设置在同一局域网下电脑端Fiddler抓取手机APP应用网络请求的步骤:

(1)电脑端启动Fiddler,打开菜单栏中的Tools>FiddlerOptions,打开“FiddlerOptions”对话框。

(2)在FiddlerOptions”对话框切换到“Connections”选项卡,然后勾选“Allowromotecomputerstoconnect”后面的复选框,然后点击“OK”按钮。(小技巧:HTTPS标签中可以设置下拉框为...fromremoteclientsonly,貌似就只接收远程端的网络请求了)

(3)在电脑端的命令行输入:ipconfig,找到本机的ip地址。(我的局域网IP:192.168.1.10)

(4)在手机端,打开android设备的“设置”->“WLAN”,找到你要连接的网络,在上面长按,然后选择“修改网络”,弹出网络设置对话框,然后勾选“显示高级选项”。(其实苹果手机也是类似的)

(5)在“代理”后面的输入框选择“手动”,在“代理服务器主机名”后面的输入框输入电脑的ip地址,在“代理服务器端口”后面的输入框输入8888,然后点击“保存”按钮。

(6)然后启动android设备中的APP应用,在fiddler中可以看到完整的请求和响应数据。

2、手机APP应用网络数据分析

手机上打开某笔公考软件后,从Fiddler左侧栏中可以看到大量的请求链接。

点击上图黄色区域的链接,可看到右侧详细数据。

post请求的参数keypointId=621638&type=3&limit=15

返回的数据为Json格式,从返回数据中我们可以找出questionIds对应的题目编号,如2084744.

点击上上图(Fiddler网络请求响应)中红色框中的链接地址,我们可以看到右侧详细数据栏的数据

从上图中我们可以找到ID号为2084744的题目的题干、选项、题型、答案等有用数据。

另外,从左侧请求链接可以找出对应的章节分类请求链接,根据分类号再查找对应的questionids,就可以把所有的题目抓取出来。

3、xls操控

将就着基于xlrd模块编写自用模块。

源码在此,可能格式错乱。需整理。

'''python

#!/usr/bin/envpython3

#-*-coding:utf-8-*-

"""

Createdon2018-05-1412:48:07

@author:wangzheng

Sys_Env:Windows_AMD64Python3.5.2

Filename:MyXls.py

Description:xls文件操控类MyXls

注意:文件路径中不能有中文名,否则出错

fromxlrdimportopen_workbook

fromxlutils.copyimportcopy

importos,shutil

classMyXls:

def__init__(self,fpath=None,modelfpath=None,sheetindex=None,protectrow=None,overwrite=True):

self.openxlspath=''#已打开的xls文件

self.sheetindex=None#当前工作表索引

self.rb=None#

self.wb=None#workbook工作簿

self.ws=None#worksheet工作表

self.headrow=0#开头保护行数

if(fpathisnotNone)and(modelfpathisnotNone):

self.open_copy_xls(modelfpath,fpath,True)

eliffpathisnotNone:self.open_xls(fpath)

ifsheetindexisnotNone:self.get_sheet(sheetindex)

ifprotectrowisnotNone:self.headrow=protectrow

defopen_xls(self,fpath):

path=fpath

try:

rb=open_workbook(path)

exceptExceptionaserr:

print("Filenotexists:"+str(err))

returnFalse

#通过sheet_by_index()获取的sheet没有write()方法

#rs=rb.sheet_by_index(0)

#rs=rb.sheet_by_name('sheet1')

self.wb=copy(rb)

self.openxlspath=path

returnTrue

defget_sheet(self,sheet_index=0):

sheets=sheet_index

#通过get_sheet()获取的sheet有write()方法

self.ws=self.wb.get_sheet(sheets)

self.sheetindex=sheets

defwrite_xls(self,row_index,column_index,data_str):

row,col,data=row_index,column_index,data_str

#写入数据

self.ws.write(row,col,data)#write(行,列,内容),索引从0开始

defwrite_xls_bycolname(self,row_index,column_name,data_str):

column_index=self.colname_to_num(column_name)

defwrite_xls_bysheet(self,sheetindex,row_index,column_name,data_str):

'''在指定工作表的指定行列表格中写入数据'''

ifself.sheetindex!=sheetindex:self.get_sheet(sheetindex)

self.write_xls_bycolname(row_index,column_name,data_str)

defsave_xls(self,fpath=None):

iffpathisNone:

self.wb.save(self.openxlspath)

print('saved'+self.openxlspath)

else:

self.wb.save(path)#保存xls文件

print('saved'+path)

defopen_copy_xls(self,model_fpath,new_fpath,overwrite=True):

'''参照模板文件,复制并打开xls文件'''

ifos.path.exists(model_fpath):

new_fpath=self.auto_mkdir(new_fpath)

if(notos.path.exists(new_fpath))oroverwrite:

#print('copy[%s]to[%s]'%(model_fpath,new_fpath))

shutil.copy(model_fpath,new_fpath)

returnself.open_xls(new_fpath)

else:print('新文件已存在,请修改新文件名!');returnFalse

else:print('模板文件不存在,不能复制到新文件!');returnFalse

defnum_to_colname(self,col_index,start=0):

#列索引转列名,基数start从0开始,0-->A

iftype(col_index)!=int:

returncol_index

ifstart==0:

x=col_index+1

elifstart==1:

x=col_index

s=''

flag=False#借位标志

whilex>26:

y=x%26#取余0-25

ify==0:y=26;flag=True;

d=chr(y+64)#低位

s=d+s

x=x//26#整除取商

ifflag:x=x-1;flag=False;#如果借位,商要先-1

g=chr(x+64)#高位

s=g+s

returns

defcolname_to_num(self,colname,start=0):

#列名转列索引A-->0,B->1,开始基数start为0

iftype(colname)isnotstr:

returncolname

colname=colname.upper()#转成大写

col=0

power=1

#print(len(colname))#位数

foriinrange(len(colname)-1,-1,-1):#range(start=0,stop,step=1)

ch=colname[i]#倒序取字母

#print(ch)#所在位上的字母

col+=(ord(ch)-ord('A')+1)*power

power*=26

#print(col-1)

ifstart==0:returncol-1

ifstart==1:returncol

defauto_mkdir(self,fpath):

'''自动补全目录,目录不存在就创建目录'''

#fpath='D:\\MyPython\\粉笔公考题库提取\\678\\980\\test.txt'

fpath=fpath.replace('\\','/')

ifnotos.path.exists(fpath):

plst=fpath.split(sep='/')

path=''

ifnotfpath.endswith('/'):plst=plst[:-1]

forpinplst:

path=path+p+'/'

ifnotos.path.exists(path):os.mkdir(path)

returnfpath

if__name__=='__main__':

model_fpath='D:\\MyPython\\model.xls'

new_fpath='D:\\MyPython\\abc\\123/out.xls'

#myxls=MyXls()

#myxls.open_copy_xls(model_fpath,new_fpath)

#myxls.get_sheet(0)

myxls=MyXls(new_fpath,model_fpath,2,3)

myxls.write_xls_bycolname(6,'K','K列6行数据')

#myxls.save_xls(new_fpath)

myxls.save_xls()

pass

'''

4、文件保存

保存成xls文件,和txt文件,txt文件再转换成word文档打印出来。大概有7个大类,100+小类,12737道题。

5、导入题库软件

xls文件导入题库中。

6、大功告成

PS:某笔app更新后,加入了防抓取数据的功能,貌似安卓5.1以上的都不能抓取了。

据资深网友反应,使用安卓模拟器(系统版本4.4)还可以抓到明文数据,有兴趣的读者可以试一试。

THE END
1.什么软件可以出题?手机导入题库考试软件试题导入app大全由本站小编整理,一般情况下,用户要想进行出题制作试卷,需要在电脑上完成操作,现在,手机上也可以轻松导入试题进行考试啦,那么什么软件可以出题?考试出题软件app有哪些?小编今天就为大家带来了一些非常好用的手机导入题库考试软件,包括磨题帮、猪八戒考试题库软件、试题通、xquestions、Quizlet等,用户下载http://www.downcc.com/k/shitidaoruapp/
2.可以导入题库的刷题软件免费推荐有什么软件可以导入题库自动出题? 导入题库的刷题软件哪个好用?还可为用户量身打造练习难度适中的刷题计划,对提升个人技能水平更有帮助。用户还可根据自己的错题记录,进行下一步刷题内容的选择和调整。支持用户根据不同课程和知识点,进行有针对性的刷题和练习。http://www.5577.com/k/kydrtkdstrj/
3.什么可以导入题库刷题软件大全什么可以导入题库刷题推荐下载PP助手为您提供什么软件可以导入题库刷题大全推荐,在这里我们为您提供什么软件可以导入题库刷题软件下载资源,什么软件可以导入题库刷题安卓版本、官方版本&老版本下载地址合集,还可查阅相关什么软件可以导入题库刷题攻略大全,欢迎到PP助手下载。https://wap.pp.cn/topic/495494/
4.一款可以导入自己的题库和自带题库的刷题软件刷题小工坊v0.8.2我可以帮助您解决,请放心制作题库。感谢信任。*这是一款自助导入题库的软件,所以不会自带太多的题库https://www.52pojie.cn/thread-1337924-1-1.html
5.一款可以免费导入题库的刷题软件上传题库刷题的一款可以免费导入题库的刷题软件 是不是还在为学员的高效刷题发愁?这个问题简直头疼到不行! 别担心,土著刷题在线考试系统来救急!这款免费刷题神器,不仅能导入题库,还能满足各种刷题需求! | 首先 | 题库导入功能真是神级!土著刷题支持一键导入题库,快速搭建适合需求的个性化题库,效率翻倍,学员们再也不https://blog.csdn.net/qq_29145989/article/details/143724902
6.有什么方法可以导入word版题库,在手机上像猿题库之类的软件那样子您可以通过以下方法在手机上使用类似于猿题库的软件进行答题:1. 下载安装猿题库等类似软件至手机。2.https://ask.zol.com.cn/x/20757457.html
7.题库自动生成word试卷的软件下载(word题库随机生成试卷)有呀!试题通可以的!试题通支持自己导入自定义题库,把要导入的题库整理成Word或Excel就可以上传到软件内,上传成功后,就可以自动随机出题练习、考试!可以在软件里寻找多模式答题方式,满足你的不同需求。 支持导入自己的题库,现目前支持导入Word和Excel题库,上传导入成功后,就可以在手机上或者电脑上随机抽题练习、http://www.zizhiok.com/shijuan/rfkz.html
8.通用题库电脑端题目导入学习考试软件该软件解压后提供四大功能,分别为空白题库模板、试题批量导入模板、通用题库批量导入器以及通用题库阅读https://www.xqu5.com/thread-1310-1-1.html
9.试题通app下载试题通(题库导入软件)下载最新版v2.3.3安卓版软件介绍 试题通是一款功能强大的考试学习软件,支持用户一键导入自己的试题库,包括Word、Excel等多种格式。它提供了丰富的做题模式,如模拟考试、试题练习、错题回做等,并配有详细的错题解析和快速搜索答案功能。此外,试题通还支持语音听题和关键字检索答案,方便用户随时随地学习,是备考各类考试的好帮手。 软件功能 1https://www.wan889.com/apps-2z-6864.html
10.分享一款老牌的自定义题库刷题软件下方的答案格式为:Answer: A, B, C ,软件会自动识别出答案的选项。 题库文本保存时要保存成ANSI编码,否则录入时会变成乱码。 题目整理好后就可以批量导入题库了,点击File,选择Import。 导入时选择默认选项即可。 如果想要更改题目类型,可以点击左下角的Answer Type。 http://www.shenzhendeyang.com/5446.html
11.求大神告诉一个软件,输入题库,然后搜关键字就能出现我导入的题库想要离线搜题就找试题通呀!首先试题通可以支持导入自己的题库,这一点,您有自己题库,这就很方便了,支持一键导入,导入成功后就可以在线答题了!后续只需将您的额题库加入到本地,就可以在离线的状态下,搜索关键词搜索到整个题目和这道题的答案了! 二、有没有app我把题库放在这个软件里,我输入关键字方便我找到考https://www.zzjyw.cn/yihu/40431.html
12.快易题库软件电脑端官方正版2024最新版绿色免费下载安装软件厂商: 立即下载普通下载,速度较慢安全下载安装金山毒霸 软件介绍 更新日志 为您推荐:文档 软件介绍 快易题库软件是一款题库练习软件,内置多种科目题型,随时可以进行练习,还支持搜索题库,方便复习不明白的地方,可以调整试卷难易程序,界面简单,操作简单。 https://www.liqucn.com/rj/195041.shtml
13.题库答题软件如何制作答题考试系统呢?题库答题考试软件是一种在线答题系统,可以通过有效的方法提高企业组织培训或学生答题考试的效率。如果已经有了试题库,想实现在线答题,可以搭建一个简单易用的题库答题软件,如何制作答题考试系统呢? 下面提供给大家使用考试系统搭建题库答题软件的操作方法:在导入题库之前,先注册在线考试系统。 1.导入题库 支持Word和https://www.kaoshixing.com/news/n461
14.明白:请问有题库软件系统吗?题库软件系统可以看看这个推荐:免费题库系统推荐 考试云在线考试系统就可以满足您的需求。支持组建自己的题库,自定义章节并向章节添加试题,支持章节刷题练习,类似于驾考宝典做题。 考试云-免费在线考试系统云平台 下面我简单地介绍一下: 1.考试云在线考试系统可以导入试题,创建题库。支持批量导入、导出、分类、查询等https://www.0438.tv/thread-4173379-1-1.html
15.什么软件可以出题?手机导入题库考试软件出题软件出题软件是一款专为教师和教育机构设计的专业工具,旨在简化创建和管理考试题目的过程。该软件提供了丰富的功能,包括但不限于多种题型支持(如选择题、填空题、简答题等)、随机组卷、自动评分等功能,极大地提高了教育工作者的工作效率。用户可以根据教学需求自定义题目库,通过智能算法快速生成符合教学大纲的试卷。https://www.greenxf.com/tag/ctrj.html
16.离线刷题宝免费刷题软件2、软件采用去中心化模式,服务器只提供软件基础服务。用户上传的题库数据信息全部存储在用户电脑本地,题库分享也是用户之间一对一传输,本软件承诺不会上传任何有关用户导入试题的数据,不存在因上传试题造成的数据泄露风险。 导入题库 本软件练习的题库可由用户自行导入,并同步至各个终端,同时也可以接收别人分享。分享https://www.stb666.com/
17.免费导入题库的刷题软件需具备哪些特点本文描述为什么说图蓝一点考试系统是一款免费导入题库的刷题软件,它具备了哪些特点。 1.免费使用:对于月答题人次小于100次的用户,一点考试系统是免费的。这意味着,如果用户或其单位部门人员不多,或参加考试的人数小于100,可以免费使用该系统。 2.智能导题:一点考试系统具有智能导题功能,可以自动识别多种试题格式,包https://www.yidiankaoshi.com/notice/1966.html
18.安徽省教育招生考试院关于印发2020年安徽省初中学业水平信息技术2.考前,考点安装当次使用的考试系统,导入试考题库和试考场次文件,进行试考测试,工作方案见《试考实施流程》(附件9),并派监考老师进行辅导。根据疫情防控和应对高温极端天气需要,今年试考工作原则上由学校相关工作人员完成。组织参加机考的考生考前观看《初中学业水平信息技术科目考试教学视频》(培训会议上公布)来熟悉https://www.ahzsks.cn/zhaokao/4261.htm
19.题库制作助手app最新版本下载题库制作助手app是一款资源很多的学习软件,可以在软件中生成专属的题库资源,会帮助用户自动识别文档中的所有题目,还可以上传一些文档资料生成想要的学习题库,会让用户们的学习变得更加的方便和轻松,生成好的题目可以让用户自由练习,还能够选择答案隐藏方式。 https://www.juxia.com/sjwy/ruanjian-605170.html