python 爬虫基本使用——统计杭电oj题目正确率并排序

 更新时间:2020年10月26日 08:43:03   作者:颀周  
这篇文章主要介绍了python 爬虫基本的基本使用,主要利用了Urllib和BeautifulSoup4这两个库,配以简单的实例帮助大家理解,感兴趣的朋友可以了解下

  python爬虫主要用两个库:Urllib和BeautifulSoup4。一个用来爬取网页,一个用来解析网页。

  Urllib是Python内置的HTTP请求库,它包含四个模块:

  1、request,最基本的 HTTP 请求模块,用来模拟发送请求,就像在浏览器里输入网址然后敲击回车一样,只需要给库方法传入 URL 与额外的参数,就可以模拟这个过程。
  2、error ,异常处理模块,如果出现请求错误,我们可以捕获这些异常,然后进行重试或其他操作保证程序不会意外终止。
  3、parse ,工具模块,提供了许多 URL 处理方法,比如拆分、解析、合并等。
  4、robotparser,主要用于识别网站的 robots.txt 文件,判断网站是否可以爬取,用的较少。

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

  BeautifulSoup4从bs4包中导出,这里主要用的就是它的解析功能。

  代码如下,注释写得很清楚了:

#杭电OJ题目AC率排序

import urllib.request as ur
from bs4 import BeautifulSoup 

dic = {} #存:"题号:题名 AC 提交次数 正确率"
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:#把统计排序好的题目保存到txt中
 for i in dic:
  f.write(str(i)+'\n') 
print("Success!")

以上就是python 爬虫基本使用——统计杭电oj题目正确率并排序的详细内容,更多关于python 爬虫的资料请关注脚本之家其它相关文章!

相关文章

  • Python数据可视化探索实例分享

    Python数据可视化探索实例分享

    这篇文章主要介绍了Python数据可视化探索实例分享,数据可视化是指用图形或表格的方式来呈现数据,关于更多相关介绍需要的小伙伴可以参考下面文章的具体内容
    2022-05-05
  • Python线性分类介绍

    Python线性分类介绍

    这篇文章主要介绍了Python线性分类,线性分类指在机器学习领域,分类的目标是指将具有相似特征的对象聚集。而一个线性分类器则透过特征的线性组合来做出分类决定,以达到此种目的。对象的特征通常被描述为特征值,而在向量中则描述为特征向量,需要的朋友可以参考下
    2022-02-02
  • Python实现图算法、堆操作和并查集代码实例

    Python实现图算法、堆操作和并查集代码实例

    这篇文章主要介绍了Python实现图算法、堆操作和并查集代码实例,图算法、堆操作和并查集是计算机科学中常用的数据结构和算法,它们在解决各种实际问题中具有重要的应用价值,需要的朋友可以参考下
    2023-08-08
  • Python使用matplotlib实现绘制自定义图形功能示例

    Python使用matplotlib实现绘制自定义图形功能示例

    这篇文章主要介绍了Python使用matplotlib实现绘制自定义图形功能,结合实例形式分析了Python基于matplotlib模块实现自定义图形绘制相关操作技巧,需要的朋友可以参考下
    2018-01-01
  • Vue的el-scrollbar实现自定义滚动

    Vue的el-scrollbar实现自定义滚动

    本篇文章给大家分享了Vue的el-scrollbar实现自定义滚动实现的过程和实例代码,对此有需要的朋友可以参考下。
    2018-05-05
  • Python松散正则表达式用法分析

    Python松散正则表达式用法分析

    这篇文章主要介绍了Python松散正则表达式用法,较为详细的分析了松散正则表达式的概念、功能与相关使用技巧,需要的朋友可以参考下
    2016-04-04
  • Python pyinotify模块实现对文档的实时监控功能方法

    Python pyinotify模块实现对文档的实时监控功能方法

    今天小编就为大家分享一篇Python pyinotify模块实现对文档的实时监控功能方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-10-10
  • 详解Django自定义图片和文件上传路径(upload_to)的2种方式

    详解Django自定义图片和文件上传路径(upload_to)的2种方式

    这篇文章主要介绍了详解Django自定义图片和文件上传路径(upload_to)的2种方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • python中单例常用的几种实现方法总结

    python中单例常用的几种实现方法总结

    Python 的模块就是天然的单例模式,下面这篇文章主要给大家介绍了关于python中单例常用的几种实现方法,文中通过示例代码介绍的非常详细,对大家学习或者使用python单例具有一定的参考学习价值,需要的朋友们一起来看看吧
    2018-10-10
  • python实现简单遗传算法

    python实现简单遗传算法

    这篇文章主要介绍了python如何实现简单遗传算法,帮助大家更好的利用python进行数据分析,感兴趣的朋友可以了解下
    2020-09-09

最新评论