JAVA爬虫练习~通过杭电oj账号查询做题数
1 首先我们来看一下 效果:
通过查找我们得到 了AC做题数 , 我们爬取HTML代码 , 通过自己的逻辑 筛选 所需要的信息
接下来是代码:
package day_1;import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.MalformedURLException; import java.net.URL; import java.util.Scanner;public class test {static int asd=0;;public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.println("############");System.out.println("欢迎查询杭电oj个人信息,请输入账号");System.out.print(":");int aaa = 0;asd = 0;while (true) {if (aaa == 0) {String str = sc.next();System.out.println("....等候");System.out.println("~~~~~~~~~~~~~~~~~~~~");getHTMLSrc("http://acm.hdu.edu.cn/userstatus.php?user=" + str);if (asd == 0) {System.out.println("查找的账号不存在");}asd=0;System.out.println("~~~~~~~~~~~~~~~~~~~~");System.out.println();aaa++;}System.out.println("可重复输入账号");System.out.print(":");String str = sc.next();System.out.println("....等候");System.out.println("~~~~~~~~~~~~~~~~~~~~");getHTMLSrc("http://acm.hdu.edu.cn/userstatus.php?user=" + str);if (asd == 0) {System.out.println("查找的账号不存在");}asd=0;System.out.println("~~~~~~~~~~~~~~~~~~~~");System.out.println();}}public static void getHTMLSrc(String url) {InputStream openStream = null;BufferedReader buf = null;try {String line = null;URL theUrl = new URL(url);openStream = theUrl.openStream();buf = new BufferedReader(new InputStreamReader(openStream, "GBK"));while ((line = buf.readLine()) != null) {if (line.contains("<h1 style=\"color:#1A5CC8\" align=center>")) {System.out.print("用户昵称:");asd++;asd++;qwe: for (int i = 0; i < line.length(); i++) {if (line.charAt(i) == '>') {for (int k = i + 1; k < line.length(); k++) {if (line.charAt(k) == '<') {break qwe;}System.out.print(line.charAt(k));}}}System.out.println();} // 用户名if (line.contains("<i style=\"color:blue\">from:")) {System.out.print("学校:"); // System.out.println(line); 这里面有用户建立的时间qwe: for (int i = line.length() - 1; i >= 0; i--) {if (line.charAt(i) == ':') {for (int k = i + 2; k < line.length(); k++) {if (line.charAt(k) == '&') {break qwe;}System.out.print(line.charAt(k));}}}}int sq = 0;String qwww = "";if (line.contains("Problems Solved")) {System.out.println();System.out.print("AC题目数量:");qwee: for (int i = 0; i < line.length(); i++) {if (sq == 4) {for (int q = i; q < line.length(); q++) {if (line.charAt(i) == '<') {break qwee;}qwww = qwww + line.charAt(q);}}if (line.charAt(i) == '>') {sq++;}}for (int i = 0; i < qwww.length(); i++) {if (qwww.charAt(i) == '<') {break;} else {System.out.print(qwww.charAt(i));}}System.out.println();}}} catch (MalformedURLException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();} finally {try {if (openStream != null) {openStream.close();}if (buf != null) {buf.close();}} catch (IOException e) {e.printStackTrace();}}}}
JAVA爬虫练习~通过杭电oj账号查询做题数相关推荐
- 杭电OJ(HDOJ)入门题目列表
杭电OJ链接: http://acm.hdu.edu.cn/ 注册与使用指南: https://blog.csdn.net/qq_38769551/article/details/101510000 ...
- 杭电oj 2099 java实现
#杭电oj 2099 java 整除的尾数 一个整数,只知道前几位,不知道末二位,被另一个整体除尽了, 那么该数的末二位该是什么呢? import java.util.*; public class ...
- 赛马网ACM试题(原杭电oj ACM)java版答案(1000,10001,1002)
赛马网ACM试题(原杭电OJ ACM试题)答案(java版) Author : Zhang Hailong Date : 2015-09-17 HomePage : http:// E ...
- c++ substr截取中间部分字符串_杭电OJ 字符串处理类部分题解
一.前言 不知不觉已经大三上学期了,可作为一个计算机狗还没有考过CCF-CSP.因平时学习内容主要与安全方面相关,对于此类算法类的考核并没有太多的准备,故打算开始刷题复习算法和数据结构,准备CCF认证 ...
- c++怎么输入带有空格的字符串_杭电OJ 字符串处理类部分题解
一.前言 不知不觉已经大三上学期了,可作为一个计算机狗还没有考过CCF-CSP.因平时学习内容主要与安全方面相关,对于此类算法类的考核并没有太多的准备,故打算开始刷题复习算法和数据结构,准备CCF认证 ...
- 用python爬取杭电oj的数据
暑假集训主要是在杭电oj上面刷题,白天与算法作斗争,晚上望干点自己喜欢的事情! 首先,确定要爬取哪些数据: 如上图所示,题目ID,名称,accepted,submissions,都很有用. 查看源代码 ...
- 杭电OJ——ACM 1003.Max Sum
Max Sum 杭电OJ--ACM 1003.Max Sum链接入口 问题描述 大意: 给定一个序列a[1],a[2],a[3]-a[n],你需要算出其子序列中的最大值.比如说:给你一个 ...
- 【ACM】杭电OJ 2037
题目链接:杭电OJ 2037 先把b[i]进行排序,然后,b[i]与a[i+1]进行比较. #include <iostream> #include <cstdio> #inc ...
- 【ACM】杭电OJ 2020(排序)
题目链接:杭电OJ 2020 排序可以有冒泡排序,选择排序,或者直接调用函数. 下面是选择排序: #include <stdio.h> #include <math.h> in ...
最新文章
- Firefox3 RC1颁布各种新特征发扬阐发更平定
- zabbix企业应用之bind dns监控(转)
- Android中的APinner2
- python用法查询笔记_Python学习笔记 - 2 - PyCharm的基本使用
- Logistic回归主要应用领域
- Hadoop 2.2.0源码浏览:4. NodeManager
- 前端学习(2025)vue之电商管理系统电商系统之渲染订单列表数据
- SharePoint 2010 中型场(Farm)——性能研究(来自DeLL技术中心博客)
- Linux运行exe程序
- cad两直线相交画圆弧_cad制图中两个圆相交于一条直线怎么画
- 【Java】面向对象(二)继承
- 哈希函数(散列函数)详解
- 阿里云建站的基本流程
- 微信图片转文字的方法有哪些
- ArcGIS 30mDEM数据空洞填补
- 歪理邪说解析架构设计师上午考试试题之一(分析2010下半年系统架构设计师上午试题01-05题)
- 作为程序员创业者,来谈一下“老罗与王自如对战”
- 空气动力学基础课堂笔记
- 谷歌创始人退位!印度籍 CEO 这是要“接管”美国科技圈?
- html对象下边框呈三角形,html5 - CSS-三角形边框无法正确呈现IE8 - 堆栈内存溢出...