用java爬取杭电oj已ac代码

举报
bigsai 发表于 2021/02/03 01:02:27 2021/02/03
【摘要】 前言 电脑的硬盘突然坏了,新安装的eclipse的代码全没了,后来发现杭电上已经ac的代码可以查看到,我是个有强迫症的人,我宁愿做很多件不同的事也不愿意做一件相同的事(复制黏贴)许多次,所以就突发奇想,做个爬虫爬取已经ac的代码。 实现 首先打开杭电的首页,这里有我想要的信息 这里,解决的问题的序列号事我们想要的。查看网页源码 就在这里找到我们想要的信息,我们...

前言

电脑的硬盘突然坏了,新安装的eclipse的代码全没了,后来发现杭电上已经ac的代码可以查看到,我是个有强迫症的人,我宁愿做很多件不同的事也不愿意做一件相同的事(复制黏贴)许多次,所以就突发奇想,做个爬虫爬取已经ac的代码。

实现

首先打开杭电的首页,这里有我想要的信息
这里写图片描述
这里,解决的问题的序列号事我们想要的。查看网页源码
这里写图片描述
就在这里找到我们想要的信息,我们要将他存下来,然后进去分析。
接着随便点击一个进去分析。
这里写图片描述
对这个图片信息,注意链接是有规律的,通过简单拼凑就可以进入,注意第一个 run id这个信息,是需要分析抓取的,然后点击code len的链接。
这里写图片描述
发现自己的代码就在这。发现链接,就是通过run id拼凑而来。这样思路就清晰了。
1:抓取主页面,获得题目号。
2:对于每个题目号,拼凑地址进入第二个界面,在分析爬取这里的run id。
3:通过run id号拼凑地址进入有代码的网页,在通过解析工具获取代码。
4:通过io传输传到本地文件
5:ps(解析工具:jsoup)注意要通过f12抓取登陆过的cookie模拟登陆,因为只爬一次,就直接抓取cookie值传入。
附上代码:
1:抓取主页面

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

public class exercise {//爬取标题
	public static void main(String[] args) throws IOException
	{
		Map map=new HashMap();//粗存id和正确的次数 
		String url="http://acm.hdu.edu.cn/userstatus.php?user=1315426911";//我的杭电页面
 Document doc=Jsoup.connect(url).get();
 Elements links=doc.getElementsByTag("script");
 Elements links1=links.attr("language", "javascript");
 Element links2=links1.get(links1.size()-2);
 String links3=links2.html();
 System.out.println(links3);//输出p(1001,2,6);p(1003,2,16);p(1006,1,3);p(1008,1,1);p(1009,3,16);**********
 String value[]=links3.split(";");//获取总共的题目数
 int length=value.length;
 for(int i=0;i 如果对后端、爬虫等感性趣欢迎关注我的个人公众号交流:`bigsai`</li>

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

文章来源: bigsai.blog.csdn.net,作者:Big sai,版权归原作者所有,如需转载,请联系作者。

原文链接:bigsai.blog.csdn.net/article/details/80223984

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。