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账号查询做题数相关推荐

  1. 杭电OJ(HDOJ)入门题目列表

    杭电OJ链接: http://acm.hdu.edu.cn/ 注册与使用指南: https://blog.csdn.net/qq_38769551/article/details/101510000 ...

  2. 杭电oj 2099 java实现

    #杭电oj 2099 java 整除的尾数 一个整数,只知道前几位,不知道末二位,被另一个整体除尽了, 那么该数的末二位该是什么呢? import java.util.*; public class ...

  3. 赛马网ACM试题(原杭电oj ACM)java版答案(1000,10001,1002)

    赛马网ACM试题(原杭电OJ ACM试题)答案(java版) Author : Zhang Hailong   Date   : 2015-09-17    HomePage : http://  E ...

  4. c++ substr截取中间部分字符串_杭电OJ 字符串处理类部分题解

    一.前言 不知不觉已经大三上学期了,可作为一个计算机狗还没有考过CCF-CSP.因平时学习内容主要与安全方面相关,对于此类算法类的考核并没有太多的准备,故打算开始刷题复习算法和数据结构,准备CCF认证 ...

  5. c++怎么输入带有空格的字符串_杭电OJ 字符串处理类部分题解

    一.前言 不知不觉已经大三上学期了,可作为一个计算机狗还没有考过CCF-CSP.因平时学习内容主要与安全方面相关,对于此类算法类的考核并没有太多的准备,故打算开始刷题复习算法和数据结构,准备CCF认证 ...

  6. 用python爬取杭电oj的数据

    暑假集训主要是在杭电oj上面刷题,白天与算法作斗争,晚上望干点自己喜欢的事情! 首先,确定要爬取哪些数据: 如上图所示,题目ID,名称,accepted,submissions,都很有用. 查看源代码 ...

  7. 杭电OJ——ACM 1003.Max Sum

    Max Sum 杭电OJ--ACM 1003.Max Sum链接入口 问题描述 大意:        给定一个序列a[1],a[2],a[3]-a[n],你需要算出其子序列中的最大值.比如说:给你一个 ...

  8. 【ACM】杭电OJ 2037

    题目链接:杭电OJ 2037 先把b[i]进行排序,然后,b[i]与a[i+1]进行比较. #include <iostream> #include <cstdio> #inc ...

  9. 【ACM】杭电OJ 2020(排序)

    题目链接:杭电OJ 2020 排序可以有冒泡排序,选择排序,或者直接调用函数. 下面是选择排序: #include <stdio.h> #include <math.h> in ...

最新文章

  1. Firefox3 RC1颁布各种新特征发扬阐发更平定
  2. zabbix企业应用之bind dns监控(转)
  3. Android中的APinner2
  4. python用法查询笔记_Python学习笔记 - 2 - PyCharm的基本使用
  5. Logistic回归主要应用领域
  6. Hadoop 2.2.0源码浏览:4. NodeManager
  7. 前端学习(2025)vue之电商管理系统电商系统之渲染订单列表数据
  8. SharePoint 2010 中型场(Farm)——性能研究(来自DeLL技术中心博客)
  9. Linux运行exe程序
  10. cad两直线相交画圆弧_cad制图中两个圆相交于一条直线怎么画
  11. 【Java】面向对象(二)继承
  12. 哈希函数(散列函数)详解
  13. 阿里云建站的基本流程
  14. 微信图片转文字的方法有哪些
  15. ArcGIS 30mDEM数据空洞填补
  16. 歪理邪说解析架构设计师上午考试试题之一(分析2010下半年系统架构设计师上午试题01-05题)
  17. 作为程序员创业者,来谈一下“老罗与王自如对战”
  18. 空气动力学基础课堂笔记
  19. 谷歌创始人退位!印度籍 CEO 这是要“接管”美国科技圈?
  20. html对象下边框呈三角形,html5 - CSS-三角形边框无法正确呈现IE8 - 堆栈内存溢出...

热门文章

  1. ARM芯片外围电路介绍
  2. 考研数学高数1-1综合测试-函数及其性质
  3. C++版本OpenCv教程(二十四)直方图匹配
  4. bmp图片显示(任意位置任意大小)
  5. h5适配华为手机_手机端h5适配mete标签
  6. 【电商项目实战】新增收货地址(详细篇)
  7. 网络工程师月入五万难不难?
  8. 基于B/S的网络考试系统的设计与实现(附:源码 论文 课件)
  9. TBschedule入门
  10. 1.WiFi模块ESP8266模块的使用(针对初学者)