用java爬取杭电oj已ac代码

网友投稿 551 2022-05-29

前言

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

实现

首先打开杭电的首页,这里有我想要的信息

这里,解决的问题的序列号事我们想要的。查看网页源码

就在这里找到我们想要的信息,我们要将他存下来,然后进去分析。

接着随便点击一个进去分析。

对这个图片信息,注意链接是有规律的,通过简单拼凑就可以进入,注意第一个 run id这个信息,是需要分析抓取的,然后点击code len的链接。

发现自己的代码就在这。发现链接,就是通过run id拼凑而来。这样思路就清晰了。

1:抓取主页面,获得题目号。

2:对于每个题目号,拼凑地址进入第二个界面,在分析爬取这里的run id。

3:通过run id号拼凑地址进入有代码的网页,在通过解析工具获取代码。

4:通过io传输传到本地文件

5:ps(解析工具:jsoup)注意要通过f12抓取登陆过的cookie模拟登陆,因为只爬一次,就直接抓取cookie值传入。

附上代码:

用java爬取杭电oj已ac代码

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`

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

Java

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:GaussDB(DWS) 单点性能案例集锦
下一篇:JAVASE——全面总结JAVA中的GUI编程
相关文章