ACM老年人退役了。
感谢Acwing算法全家桶,让我的算法水平提升了不少。
之前就看到有些统计做题数的爬虫,但是通常只有hdu,cf,vj之类的爬虫,没看到有acwing活动打卡页面的。刚好期末大作业准备做一个能统计各大oj做题数的功能,于是在网上查找了些资料,写了这个爬虫。

用的语言是java,可以统计活动打卡5页的做题数(y总现在也只有3页),需要更多可以在for循环那里修改。
食用方法:在main函数里填入自己的id然后运行即可(id在右上角我的空间,上面的url有一串数字就是id)
不是专业搞爬虫的,仅供参考。

package acm.crawler;import io.swagger.models.auth.In;
import org.apache.http.HttpEntity;
import org.apache.http.HttpStatus;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.config.CookieSpecs;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.utils.HttpClientUtils;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.jsoup.Jsoup;
import org.jsoup.helper.StringUtil;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;import java.io.IOException;/*** Description:Acwing活动做题数爬虫,爬取5页的活动* Date:2021-12-08 9:22 下午*/
public class HttpClientDownPage {//设置代理,模范浏览器private static final String USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36";public static String sendGet(String url){//1.生成httpclient,相当于该打开一个浏览器CloseableHttpClient httpClient = HttpClients.createDefault();//设置请求和传输超时时间RequestConfig requestConfig = RequestConfig.custom().setCookieSpec(CookieSpecs.STANDARD).setSocketTimeout(2000).setConnectTimeout(2000).build();CloseableHttpResponse response = null;StringBuilder html = new StringBuilder();//2.创建get请求,相当于在浏览器地址栏输入 网址try {for(int i=1;i<=5;i++){HttpGet request = new HttpGet(url+"/"+i);request.setHeader("User-Agent",USER_AGENT);request.setConfig(requestConfig);//3.执行get请求,相当于在输入地址栏后敲回车键response = httpClient.execute(request);//4.判断响应状态为200,进行处理if(response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {//5.获取响应内容HttpEntity httpEntity = response.getEntity();html.append(EntityUtils.toString(httpEntity, "GBK"));} else {//如果返回状态不是200,比如404(页面不存在)等,根据情况做处理,这里略System.out.println("返回状态不是200");System.out.println(EntityUtils.toString(response.getEntity(), "utf-8"));}}} catch (ClientProtocolException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();} finally {//6.关闭HttpClientUtils.closeQuietly(response);HttpClientUtils.closeQuietly(httpClient);}return html.toString();}private static Integer paraseList(Document document){//根据网页标签解析源码Elements elements = document.select("span[style=color: #6a737c;]");Integer result = 0;for(Element element:elements){String[] msg = element.text().split(" ");result += Integer.valueOf(msg[1]);}return result;}public static Integer getAcwing(String id){String html = sendGet("https://www.acwing.com/user/myspace/activity/"+id);return paraseList(Jsoup.parse(html));}public static void main(String[] args){System.out.println(getAcwing("1"));//输入你的id}
}

知道maven的可以直接导入依赖,就不用弄一堆jar包了

        <dependency><groupId>org.jsoup</groupId><artifactId>jsoup</artifactId><version>1.11.3</version></dependency><dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.5.9</version></dependency>

Acwing活动打卡做题数统计爬虫相关推荐

  1. JAVA爬虫练习~通过杭电oj账号查询做题数

    1 首先我们来看一下 效果: 通过查找我们得到 了AC做题数 , 我们爬取HTML代码 , 通过自己的逻辑 筛选 所需要的信息 接下来是代码: package day_1;import java.io ...

  2. acwing查看做题总数

    1.配置类库 pip install re pip install requests pip install lxml 如果有就不用安装了 import re import requests from ...

  3. 一道有趣的sql题,统计复旦用户8月练题情况

    这是一道非常有趣的sql题,第一部分是题的描述,第二部分是题解(tips:右上角有个小目录). 不妨看完题目先思考一下,或者实际运行一下.也可直接从题解看起,题解并非直述答案,而是从每一个sql知识点 ...

  4. [做题记录]AtCoder AGC做题记录

    最近一直在做BZOJ的题,思维含量太低,大脑已经生锈 做一下AtCoder的AGC锻炼一下思维吧 目前已做题数: 27 总共题数: 204 每一场比赛后面的字母是做完的题,括号里是写完题解的题 AGC ...

  5. 【做题记录】AtCoder AGC做题记录

    做一下AtCoder的AGC锻炼一下思维吧 目前已做题数: 127 总共题数: 269 每一场比赛后面的字母是做完的题,括号里是写完题解的题 AGC001: ABCDEF (DEF) AGC002: ...

  6. AI学高数达到MIT本科水平,学了微积分线性代数概率论等6门课,不光能做题还能出题...

    梦晨 发自 凹非寺 量子位 报道 | 公众号 QbitAI 让语言模型做数学题,有多难? 强如GPT-3,在9-12岁的小学数学上,第一次才考20多分. 去年底GPT-3用上新方法努力了很久终于拿到5 ...

  7. leetcode每日一题1609. 奇偶树 圣诞节你做奇偶数了没 BFS套模板一遍过

    本文目录 leetcode每日一题1609. 奇偶树 圣诞节你做奇偶数了没 BFS套模板一遍过~ 写在前面 题目 示例 提示 思路 代码实现 执行结果 写在最后 leetcode每日一题1609. 奇 ...

  8. Android 实现答题、做题功能包含(多选、单选、材料、填空 、判断 、问答 )以及题卡交卷查看解析功能

    序 此博客文章为了还之前的技术债 ,去年 8 月份已经写了一篇答题功能的博客 ,由于种种原因那篇文章写的比较简单 ,也没有能直接用的 Demo .然后有好多朋友私信我说 demo 有问题 ,给那些陌生 ...

  9. 数数题(计数类 DP)做题记录

    数数题(计数类 DP)做题记录 CF1657E Star MST 我们称张无向完全图是美丽的当且仅当:所有和 \(1\) 相连的边的边权之和等于这张完全图的最小生成树的边权之和. 完全图点数为 \(n ...

最新文章

  1. 在CMD窗口连接到Mysql
  2. javascript中最最最常用的方法封装
  3. 力扣【下一个更大元素】leetcode-503.下一个更大元素 Ⅱ:单调栈解法+循环数组解法
  4. 自动挂载ios_开机自动挂载iso
  5. 【Iphone 游戏开发】游戏引擎剖析
  6. 安装jdk后出现bash: ./java: /lib/ld-linux.so.2: bad ELF interpreter: 没有那个文件或目录
  7. 【期望】选书问题(金牌导航 期望-7)
  8. LeetCode 397. 整数替换(递归 贪心)
  9. UNION 和UNION ALL 的区别
  10. Nice,涨薪近40%
  11. android打包成apk会屏蔽注解,Android解决混淆打包之后注解被去掉的问题-Go语言中文社区...
  12. zen3架构_AMD YES! Zen3架构亮相,消费者CPU市场的竞争热闹了
  13. ASP人事工资管理系统毕设
  14. 记一次搭建 nodebb 论坛
  15. 考托福要不停的告诉自己:每临大事有静气!
  16. 转载:mongo常规操作 大于/小于/不等于……
  17. VS2019 KEY
  18. NETDMIS5.0三个面基准建立坐标系2023
  19. nargin 和 nargout
  20. 使用java破解wifi(win10环境)

热门文章

  1. Cesium:加载GeoServer-WMS服务
  2. Boost在Windows XP运行的编译方法
  3. 【转载】Android应用之——百度地图定位返回4.9E-324的解决方案
  4. AO3400-ASEMI低功耗长效应管AO3400
  5. 初二因式分解奥数竞赛题_八年级数学因式分解进阶练习题含答案
  6. GIT | GIT命令大全
  7. HTML5 网页添加背景音乐
  8. Ubuntu中Kdevelop的安装和使用
  9. 柔性电子:动态识别物理信号的柔性聚合物传感器
  10. flutter/dart通过ffi调用rust代码