请教一个驾校考试题库试题网页保存问题
本帖最后由 m765555 于 2014-4-6 23:20 编辑网址是http://www.jszks.com/list/
备注:本人只是想把题库保存起来,然后打印出来学习而已,绝非用于其它恶意目的。因为在线的话,是一次随机的,而且只有十分之一的题,麻烦啊.另外也是想学习一下写这代码提升一下。
我想把所有的题,都用au3自动点击选择答案,如果选择答案错误的话,网页会提示“答错了……”,则继续选择另外的答案,如果答对了,则会提示“答对了……”,如果答对了,则自动写入一个word中(包括答案一并写入,答案写在问题下一行,和原格式一样,感觉难),并空一行,等待写入下个题,
写入word成功后,au3继续点击当前网页中的“下一题”,继续循环上面的操作,对了就写入,错了就重选择,直到题库完成。
本人尝试了一下,思路有点模糊,请各位指点一下…… 你这想发不错,就是不知道做好了会查水表不 回复 1# m765555
我只给你方法. 不按你的要求来. 你自己下载测试.
#include <file.au3>
Global $url="http://www.jszks.com/data/question/序号.txt"
Global $questionData
ProgressOn ( "驾校题库获取器", "开始读取数据" , "0%" , 100 , 100 , 16)
For $i=1 To 4951
$questionData[$i]=BinaryToString(InetRead(StringReplace($url,"序号",$i),1+2),4)
$questionData[$i]=StringRegExpReplace($questionData[$i],'{"id":\d+,"question":"',"问题:")
$questionData[$i]=StringReplace($questionData[$i],'","answer":',"答案:")
$questionData[$i]=StringReplace($questionData[$i],'"image"',"图片")
$questionData[$i]=StringReplace($questionData[$i],'"type"',"类型")
$questionData[$i]=StringReplace($questionData[$i],'"item1"','选项1')
$questionData[$i]=StringReplace($questionData[$i],'"item2"','选项2')
$questionData[$i]=StringReplace($questionData[$i],'"item3"','选项3')
$questionData[$i]=StringReplace($questionData[$i],'"item4"','选项4')
$questionData[$i]=StringReplace($questionData[$i],'"explain":"','扩展阅读:')
$questionData[$i]=StringRegExpReplace($questionData[$i],'","explainid":\d+}','')
$progress=Round($i/4951*100,2)
ProgressSet( $progress, $progress & " %")
Next
$questionData=$i
ProgressSet(100 , "完成", "全部完成")
_FileWriteFromArray(@ScriptDir&"\data.txt",$questionData)
ProgressOff()
MsgBox(0,"提示","全部下载完成,请打开data.txt查看")
今天有空再仔细看了一下,每个题的答案选项数目不一样,感觉根本无法实现目的.哎,多谢lanfengc提供思路哈,有空再研究下 本帖最后由 骗子 于 2014-4-9 11:19 编辑
#include <IEEx.au3>
#include <IE.au3>
$oIE = _IEAttach("http://www.jszks.com/list/", "url")
While 1
$text = ''
$d = _IEGetObjById($oIE, '_radio1')
_IEAction($d, 'click')
Do
Sleep(500)
$result = _IEGetObjById($oIE, 'result')
Until $result.innertext <> ''
$Ele = _IEQuery($oIE, "DIV", 'class=s1')
$text &= $Ele.innertext & @CRLF
If StringInStr($result.innertext, '答对了') Then
$text &= $result.innertext & '正确答案是 A ' & @CRLF
Else
$text &= $result.innertext & @CRLF
EndIf
$INPUT = _IEQuery($oIE, "INPUT", 'value=下一题')
_IEAction($INPUT, 'click')
FileWrite('tiku.txt', $text & @CRLF)
_IELoadWait($oIE)
WEnd
页:
[1]