国产成人精品亚洲777人妖,欧美日韩精品一区视频,最新亚洲国产,国产乱码精品一区二区亚洲

您的位置:首頁技術(shù)文章
文章詳情頁

python 爬蟲基本使用——統(tǒng)計(jì)杭電oj題目正確率并排序

瀏覽:2日期:2022-07-07 10:13:48

python爬蟲主要用兩個(gè)庫:Urllib和BeautifulSoup4。一個(gè)用來爬取網(wǎng)頁,一個(gè)用來解析網(wǎng)頁。

Urllib是Python內(nèi)置的HTTP請(qǐng)求庫,它包含四個(gè)模塊:

1、request,最基本的 HTTP 請(qǐng)求模塊,用來模擬發(fā)送請(qǐng)求,就像在瀏覽器里輸入網(wǎng)址然后敲擊回車一樣,只需要給庫方法傳入 URL 與額外的參數(shù),就可以模擬這個(gè)過程。2、error ,異常處理模塊,如果出現(xiàn)請(qǐng)求錯(cuò)誤,我們可以捕獲這些異常,然后進(jìn)行重試或其他操作保證程序不會(huì)意外終止。3、parse ,工具模塊,提供了許多 URL 處理方法,比如拆分、解析、合并等。4、robotparser,主要用于識(shí)別網(wǎng)站的 robots.txt 文件,判斷網(wǎng)站是否可以爬取,用的較少。

這里只用到了最常用的request。

BeautifulSoup4從bs4包中導(dǎo)出,這里主要用的就是它的解析功能。

代碼如下,注釋寫得很清楚了:

#杭電OJ題目AC率排序import urllib.request as urfrom bs4 import BeautifulSoup dic = {} #存:'題號(hào):題名 AC 提交次數(shù) 正確率'for t in range(1,59,1):#1~58頁都爬一遍 print(t) url = ’http://acm.hdu.edu.cn/listproblem.php?vol=’+str(t) #存網(wǎng)址 bs = BeautifulSoup(ur.urlopen(url).read(),'html.parser')#獲取網(wǎng)址的html并轉(zhuǎn)換為可以python可以使用的結(jié)構(gòu) ql0 = str(bs.body.table.contents[11].td.table.contents[1])#網(wǎng)頁的DOM解析后可以直接通過'.'來尋找子元素,找到題目的列表元素后,將列表中所有題目轉(zhuǎn)換成字符串。(可以輸出看看) ql = ql0[30:-10].split(';') #字符串中的題目以';'分隔,將它們分開,并存到列表中 for i in ql: #以下就是格式化處理每個(gè)題目,然后存到字典中 info1 = i.split(’,'’,1) num = info1[0].split(’,’)[1] info2 = info1[1].split(’',’,1) name = info2[0] right,submit = info2[1].split(’,’,1) submit = submit[:-1] dic[num] = [name,int(right),int(submit),int(right)/int(submit)]dic = sorted(dic.items(),key = lambda x: x[1][3]) #每頁題目都存入字典后,把字典中的題目通過正確率進(jìn)行排序,傳出列表with open(’Statistics.txt’,’w’,encoding = ’utf-8’) as f:#把統(tǒng)計(jì)排序好的題目保存到txt中 for i in dic: f.write(str(i)+’n’) print('Success!')

以上就是python 爬蟲基本使用——統(tǒng)計(jì)杭電oj題目正確率并排序的詳細(xì)內(nèi)容,更多關(guān)于python 爬蟲的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 喀喇沁旗| 缙云县| 东台市| 东台市| 延长县| 都兰县| 新源县| 青神县| 天祝| 城口县| 通道| 新绛县| 津市市| 都匀市| 南部县| 日土县| 余庆县| 长阳| 栾川县| 惠来县| 阳山县| 太仓市| 岐山县| 拜泉县| 香港| 揭阳市| 沛县| 阳新县| 时尚| 长垣县| 哈巴河县| 沈丘县| 城固县| 汾阳市| 厦门市| 确山县| 肥城市| 阜南县| 西峡县| 漳平市| 乌兰察布市|