日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

举例用Python爬取科目四考试题库的详细方法

發布時間:2024/3/24 python 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 举例用Python爬取科目四考试题库的详细方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這篇文章僅提供參考
考駕駛證這是多少人的噩夢,小編就懼怕考證,不敢想象“馬路女殺手”在我這里會不會升級成“上手車沒人沒”,我的父親大人,他用他堅強的毅力連續報考了六次,這中間的過程我不知道是有多殘忍,就在去年度過劫難考到證,就差擺一桌慶祝了,啊~艱難的考證之路,進入主題

1、環境

PyCharm

Python 3.6

谷歌瀏覽器
pip安裝的依賴包包括:requests 2.25.0、urllib3 1.26.2、docx 0.2.4、python-docx 0.8.10、lxml 4.6.2

2、目標網站及請求分析

駕駛員考試網站

從上圖中,可以看到科目四共有1487道題目,為了將所有的題目匯總到一個Word文檔中,需要獲取到每道題的文本和圖片。
首先,打開谷歌瀏覽器訪問上述網站,鍵盤按F12,點擊Network,點擊左側題目中的向右箭頭,一直點擊下一道題,不斷發起請求,在右側可以看到每個題目的請求鏈接中只有五位字符的考試碼不一樣,所以我們要想辦法獲取每道題目的考試碼。

點擊其中的一個請求,在Headers中可以看到題目請求的url網址和狀態,在Preview中可以看到題目的相關信息。

然后用谷歌瀏覽器打開上述網站,然后鍵盤按F12,點擊sources,點擊左側Page下tk.mnks.cn下的lianxitix下的文件夾,可以看到Exam的相關變量信息,其中ExamCodes就是1487道題所對應的考試碼。

var ExamStatus = "200"; var ExamMsg = ""; var ExamVersion = "20210205090935"; var ExamCount = 1487; var ExamCodes =

3、Python代碼

完整代碼如下:

import requests import time import urllib.request import docx #創建內存中的word文檔對象 from docx.shared import Pt from docx.enum.text import WD_PARAGRAPH_ALIGNMENTdef download_img(img_url,imgname):request = urllib.request.Request(img_url)try:response = urllib.request.urlopen(request)img_name = imgname+'.gif'filename = "D:\\Program Files (x86)\\PyCharm Community Edition 2020.1.1\\PaQukemu4tiku\\folder\\imgpath\\" + img_nameif (response.getcode() == 200):with open(filename, "wb") as f:f.write(response.read()) # 將內容寫入圖片return filenameexcept:return "failed"file = docx.Document() headers ={ 'Connection': 'close' } for i in range(0, ExamCount):ExamCodei=ExamCodes[i]urlselecti = 'https://tkdata.mnks.cn/ExamData/'+ ExamCodei +'.json?CALL=?20201231143735.json' #選擇題responsei = requests.get(urlselecti, headers=headers,timeout=50,verify=False)resulti = responsei.json()ExamTi = resulti['tm'].split('<br/>')if(len(ExamTi) > 1):print(str(i+1)+'、'+ExamTi[0] + ' 答案:' + resulti['da'] + '\n ' + ExamTi[1] + ' ' + ExamTi[2] + ' ' + ExamTi[3] + ' ' + ExamTi[4])file.add_paragraph(str(i+1)+'、'+ExamTi[0] + ' 答案:' + resulti['da'])if (resulti['tv'] != ''):ExamTiimg = resulti['tv'].split('/')ExamTiimgurl = 'https://sucimg.itc.cn/sblog/' + ExamTiimg[2]print(ExamTiimgurl)download_img(ExamTiimgurl, ExamTiimg[2])paragraph = file.add_paragraph() # 圖片居中設置paragraph.alignment = WD_PARAGRAPH_ALIGNMENT.CENTERrun = paragraph.add_run("")run.add_picture("D:\\Program Files (x86)\\PyCharm Community Edition 2020.1.1\\PaQukemu4tiku\\folder\\imgpath\\" + ExamTiimg[2] + '.gif')file.add_paragraph(' '+ExamTi[1] + ' ' + ExamTi[2] + ' ' + ExamTi[3] + ' ' + ExamTi[4])else:print(str(i+1)+'、'+resulti['tm'] + ' 答案:' + resulti['da'])file.add_paragraph(str(i+1)+'、'+resulti['tm'] + ' 答案:' + resulti['da'])if (resulti['tv'] != ''):ExamTiimg = resulti['tv'].split('/')ExamTiimgurl = 'https://sucimg.itc.cn/sblog/' + ExamTiimg[2]print(ExamTiimgurl)download_img(ExamTiimgurl, ExamTiimg[2])paragraph = file.add_paragraph() # 圖片居中設置paragraph.alignment = WD_PARAGRAPH_ALIGNMENT.CENTERrun = paragraph.add_run("")run.add_picture("D:\\Program Files (x86)\\PyCharm Community Edition 2020.1.1\\PaQukemu4tiku\\folder\\imgpath\\" + ExamTiimg[2] + '.gif')#time.sleep(1) file.save("D:\\Program Files (x86)\\PyCharm Community Edition 2020.1.1\\PaQukemu4tiku\\folder\\C1科目四1487題.docx") #保存

4、運行結果

在項目文件夾下folder中imgpath保存所有題目的圖片,C1科目四1487題.docx就是運行結果。

打開Word文檔進行查看:


word文檔可另存為pdf

與科目一不同的是,科目四里很多選擇題中的圖片是動態的GIF圖,而不是靜態的png,所以題目保存到Word中后圖片并不會動態顯示,因此,考慮將Word文檔另存為網頁文件(.html)

結果(包含動畫)如下圖所示:


免費:Python資源共享+視頻課堂+電子書籍點一下有驚喜

到此這篇關于Python爬取科目四考試題庫的方法實現的文章就介紹到這了,祝現在就在考證的朋友們一次就能過關,更多相關Python基礎學習資源分享可以看小編主頁關注小編。

總結

以上是生活随笔為你收集整理的举例用Python爬取科目四考试题库的详细方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。