python 爬虫基本使用——统计杭电oj题目正确率并排序
作者:颀周 时间:2021-11-25 17:16:35
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!")
来源:https://www.cnblogs.com/qizhou/p/13030209.html
标签:python,爬虫,统计
0
投稿
猜你喜欢
Python字符串转换成浮点数函数分享
2022-10-04 01:04:37
selenium python 实现基本自动化测试的示例代码
2021-05-04 06:23:07
获得当前数据库对象依赖关系的实用算法
2009-01-08 13:28:00
如何处理json中不带双引号的key的问题
2023-02-07 00:25:22
Python中socket网络通信是干嘛的
2023-12-16 02:57:03
python直接获取API传递回来的参数方法
2023-11-10 18:01:59
vue cli+axios踩坑记录+拦截器使用方式,代理跨域proxy
2023-07-02 16:38:30
快速配置PHPMyAdmin方法
2023-07-16 07:05:20
一行代码生成Tableau可视化图表的方法
2022-09-21 12:01:47
(100-1)% 的内容是导航
2008-01-11 19:23:00
Python库学习Tkinter制作GUI个性签名设计软件
2021-06-23 08:17:54
Python实现的求解最大公约数算法示例
2022-01-12 12:15:35
Python项目实战之使用Django框架实现支付宝付款功能
2021-12-11 23:28:11
Python写的Tkinter程序屏幕居中方法
2022-08-03 17:53:07
Mysql实战练习之简单图书管理系统
2024-01-17 14:09:32
php在windows环境下获得cpu内存实时使用率(推荐)
2023-11-15 04:44:23
tensorflow之如何使用GPU而不是CPU问题
2023-07-06 13:05:48
python global关键字的用法详解
2023-12-30 03:32:02
Python Pycurl的属性与方法案例详解
2022-09-27 04:57:23
图文详解在Anaconda安装Pytorch的详细步骤
2022-12-27 10:37:25