需要引入Jsoup依赖:

        <dependency><!-- jsoup HTML parser library @ https://jsoup.org/ --><groupId>org.jsoup</groupId><artifactId>jsoup</artifactId><version>1.12.1</version></dependency>

Jsoup相关依赖:https://jsoup.org/
其他需要的是 FileHelper 类,参见:https://www.cnblogs.com/zifeiy/p/9224569.html
(不过我们这边可能需要将"UTF-8"改成"GBK" ~)
然后实现的类如下:

package com.zifeiy.cf_data_get.handle;import java.io.File;
import java.io.IOException;import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;import com.zifeiy.cf_data_get.assist.FileHelper;public class SubmissionInfoGet {public void getSubmission(int contestId, int submissionId) throws IOException {String urlString = "http://codeforces.com/contest/" + contestId + "/submission/" + submissionId;Document doc = Jsoup.connect(urlString).get();System.out.println("title = " + doc.title());String dirString = "D:/codeforces/" + submissionId;File dir = new File(dirString);if (dir.exists() == false) dir.mkdirs();File dataDir = new File(dirString + File.separator + "data");if (dataDir.exists() == false) dataDir.mkdirs();// 代码String codeString = doc.getElementById("program-source-text").text();File codeFile = new File(dirString + File.separator + "std.cpp");FileHelper.writeFile(codeFile, codeString);Elements inputElements = doc.getElementsByClass("file input-view");Elements outputElements = doc.getElementsByClass("file answer-view");int sz = inputElements.size();int cnt = 0;for (int i = 0; i < sz; i ++) {String inputTextString = inputElements.get(i).getElementsByClass("text").get(0).text();String outputTextString = outputElements.get(i).getElementsByClass("text").get(0).text();if (inputTextString.endsWith("...") == false) {
//              System.out.println("[input]\n" + inputTextString + "\n[output]\n" + outputTextString + "\n[end]");cnt ++;File inputFile = new File(dirString + File.separator + "data" + File.separator + cnt + ".in");FileHelper.writeFile(inputFile, inputTextString);File outputFile = new File(dirString + File.separator + "data" + File.separator + cnt + ".out");FileHelper.writeFile(outputFile, outputTextString);}}}// main for testpublic static void main(String[] args) throws IOException {new SubmissionInfoGet().getSubmission(1169, 54847813);}}

其中,contestIdsubmissionId 分别对应 比赛Id 和 提交Id 。

转载于:https://www.cnblogs.com/zifeiy/p/10963006.html

Java抓取Codeforces——针对某一次提交的源码和数据相关推荐

  1. 【Python爬虫项目】链家房屋信息抓取(超详细适合新手练习附源码)

    爬取链家房屋信息 爬取信息具体如下: 1.标题 2.位置 3.房屋介绍 4.房屋总价 5.房屋单价 一.检查网页源码 搜索标题中的关键字发现目标信息可以在源码中找到,所以我们请求该url网址就可以拿到 ...

  2. 「兔了个兔」看我如何抓取兔兔图片到本地(附源码)

  3. php如何抓取html代码,使用php如何获取网页源码?

    文章正文内容: 一下是几种常用的获取网页源码的几种方式: 1. file_get_contents 2.curl 3.fopen->fread->fclose 注意: 1.使用file_g ...

  4. java抓取网站数据

    java 抓取网站数据 假设你需要获取51job 人才网上java 人才的需求数量,首先你需要分析51job 网站的搜索这 一块是怎么运作的,通过解析网页的源代码,我们发现了以下一些信息: 1. 搜索 ...

  5. java 抓取网页乱码_java抓取网页乱码问题的处理

    今天同事做了一个我们感觉很牛B的彩票预测程序,采用的是遗传算法实现,于是我"剽"来学习先,但是部署到我电脑上以后,就有问题了: 1.用她的抓取程序得到的网页内容出现乱码,导致数据无 ...

  6. java抓取网页内容

    今天做项目时用到java抓取网页内容,本以为很简单的一件事但是还是让我蛋疼了一会,网上资料一大堆但是都是通过url抓取网页内容,但是我要的是读取本地的html页面内容的方法,网上找不到怎么办我瞬间了! ...

  7. Java抓取起点小说输出到本地文件夹和数据库

    Java抓取起点小说输出到本地文件夹和数据库 目录 项目结构 所需插件 项目代码 输出结果 目录 项目结构 第一次写网络爬虫,参考了别人的,也自己理解了用法 所需插件 因为使用了mevan,直接上po ...

  8. python 抓取的网页默认是bytes的,要转码

    python 抓取的网页默认是bytes的,要转码. 查看网页源码可以看到,我本次抓取的网页的编码方式是utf-8的. req = urllib.request.Request(url=myurl,h ...

  9. java毕业设计——基于Java+Socket的视频会议系统设计与实现(毕业论文+程序源码)——视频会议系统

    基于Java+Socket的视频会议系统设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于Java+Socket的视频会议系统设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦.需要下 ...

最新文章

  1. ICRA 2020 | 实时语义立体匹配
  2. placement new机制初探
  3. 利用JDK工具进行系统性能监测
  4. matlab有限差分一维导热,一维导热方程-有限差分法-matlab实现11.docx
  5. Google研究员Ilya Sutskever:成功训练LDNN的13点建议
  6. 牛客2021年愚人节比赛 【题解】
  7. 机器学习回归算法—性能评估欠拟合与过拟合
  8. Berkeley DB作用
  9. 【干货合集】看完这些干货,再说你因为“怕蛇”,所以学不好Python!
  10. Number.parseInt(), Number.parseFloat()
  11. orm2 中文文档 3.1 模型属性
  12. php运行日志在哪里看,thinkphp错误日志在哪
  13. python 返回上一级_命令行 返回上一级目录怎么操作
  14. Latex VS Code 编辑中文Latex乱码——详细解决方案操作流程
  15. C语言实现打印平行四边形
  16. 渝粤题库 陕西师范大学 《中国古代文学(四)》作业
  17. spark视频-第二期:Shark、SparkSQL
  18. 细数银行7大手续费 这些冤枉钱别再交了
  19. 基于焦散线方法的自加速光束设计
  20. hdmi 屏幕旋转 树莓派_树莓派屏幕旋转的两种方法

热门文章

  1. 系统调用和库函数调用
  2. JavaEE开发之SpringMVC中的自定义拦截器及异常处理
  3. 金额大小写转换(4)
  4. 面试常考题:不调用库函数,怎样实现字符串操作函数?
  5. 使用VMWareWorkstation搭建学习环境
  6. 对tmemorystream的一些改进_delphi教程 [转]
  7. android8版本怎么下载,华为安卓8.0系统正式版下载-华为安卓8.0系统体验版安卓版_飞翔下载...
  8. vim替换字符串带斜杠_Linux vi/vim最全使用指南
  9. js延时函数_js自执行函数分享
  10. 计算机界面横向拉宽了怎样还原,电脑屏幕变大变小了如何还原