python 爬蟲基本使用——統(tǒng)計杭電oj題目正確率并排序
python爬蟲主要用兩個庫:Urllib和BeautifulSoup4。一個用來爬取網頁,一個用來解析網頁。
Urllib是Python內置的HTTP請求庫,它包含四個模塊:
1、request,最基本的 HTTP 請求模塊,用來模擬發(fā)送請求,就像在瀏覽器里輸入網址然后敲擊回車一樣,只需要給庫方法傳入 URL 與額外的參數(shù),就可以模擬這個過程。
2、error ,異常處理模塊,如果出現(xiàn)請求錯誤,我們可以捕獲這些異常,然后進行重試或其他操作保證程序不會意外終止。
3、parse ,工具模塊,提供了許多 URL 處理方法,比如拆分、解析、合并等。
4、robotparser,主要用于識別網站的 robots.txt 文件,判斷網站是否可以爬取,用的較少。
這里只用到了最常用的request。
BeautifulSoup4從bs4包中導出,這里主要用的就是它的解析功能。
代碼如下,注釋寫得很清楚了:
#杭電OJ題目AC率排序 import urllib.request as ur from bs4 import BeautifulSoup dic = {} #存:"題號:題名 AC 提交次數(shù) 正確率" for t in range(1,59,1):#1~58頁都爬一遍 print(t) url = 'http://acm.hdu.edu.cn/listproblem.php?vol='+str(t) #存網址 bs = BeautifulSoup(ur.urlopen(url).read(),"html.parser")#獲取網址的html并轉換為可以python可以使用的結構 ql0 = str(bs.body.table.contents[11].td.table.contents[1])#網頁的DOM解析后可以直接通過"."來尋找子元素,找到題目的列表元素后,將列表中所有題目轉換成字符串。(可以輸出看看) ql = ql0[30:-10].split(";") #字符串中的題目以";"分隔,將它們分開,并存到列表中 for i in ql: #以下就是格式化處理每個題目,然后存到字典中 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]) #每頁題目都存入字典后,把字典中的題目通過正確率進行排序,傳出列表 with open('Statistics.txt','w',encoding = 'utf-8') as f:#把統(tǒng)計排序好的題目保存到txt中 for i in dic: f.write(str(i)+'\n') print("Success!")
以上就是python 爬蟲基本使用——統(tǒng)計杭電oj題目正確率并排序的詳細內容,更多關于python 爬蟲的資料請關注腳本之家其它相關文章!
- Python 統(tǒng)計數(shù)據(jù)集標簽的類別及數(shù)目操作
- Python統(tǒng)計可散列的對象之容器Counter詳解
- Python 統(tǒng)計列表中重復元素的個數(shù)并返回其索引值的實現(xiàn)方法
- Python實戰(zhàn)之單詞打卡統(tǒng)計
- python之cur.fetchall與cur.fetchone提取數(shù)據(jù)并統(tǒng)計處理操作
- python自動統(tǒng)計zabbix系統(tǒng)監(jiān)控覆蓋率的示例代碼
- python 統(tǒng)計代碼耗時的幾種方法分享
- Python統(tǒng)計列表元素出現(xiàn)次數(shù)的方法示例
- python統(tǒng)計RGB圖片某像素的個數(shù)案例
- Python jieba 中文分詞與詞頻統(tǒng)計的操作
- 利用Python3實現(xiàn)統(tǒng)計大量單詞中各字母出現(xiàn)的次數(shù)和頻率的方法
- 使用Python 統(tǒng)計文件夾內所有pdf頁數(shù)的小工具
- python 統(tǒng)計list中各個元素出現(xiàn)的次數(shù)的幾種方法
- python調用百度AI接口實現(xiàn)人流量統(tǒng)計
- Python代碼覆蓋率統(tǒng)計工具coverage.py用法詳解
- 利用python匯總統(tǒng)計多張Excel
- python統(tǒng)計mysql數(shù)據(jù)量變化并調用接口告警的示例代碼
- 用python實現(xiàn)監(jiān)控視頻人數(shù)統(tǒng)計
相關文章
一文搞懂Python中pandas透視表pivot_table功能
透視表是一種可以對數(shù)據(jù)動態(tài)排布并且分類匯總的表格格式。或許大多數(shù)人都在Excel使用過數(shù)據(jù)透視表,也體會到它的強大功能,而在pandas中它被稱作pivot_table,今天通過本文給大家介紹Python中pandas透視表pivot_table功能,感興趣的朋友一起看看吧2021-11-11淺談插入排序算法在Python程序中的實現(xiàn)及簡單改進
這篇文章主要介紹了插入排序算法在Python程序中的實現(xiàn)及簡單改進,插入排序算法的最差時間復雜度為O(n^2),最優(yōu)時間復雜度為O(n),存在一定的優(yōu)化空間,需要的朋友可以參考下2016-05-05pytorch Dataset,DataLoader產生自定義的訓練數(shù)據(jù)案例
這篇文章主要介紹了pytorch Dataset, DataLoader產生自定義的訓練數(shù)據(jù)案例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-03-03pytorch中關于distributedsampler函數(shù)的使用
這篇文章主要介紹了pytorch中關于distributedsampler函數(shù)的使用,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-02-02