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

需要引入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 test
    public static void main(String[] args) throws IOException {
        new SubmissionInfoGet().getSubmission(1169, 54847813);
    }

}

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

原文地址:https://www.cnblogs.com/zifeiy/p/10963006.html

时间: 2024-10-13 01:19:41

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

Python抓取电影天堂, 零基础都可以学? 源码&amp;视频教程, 大赞!

我此次利用Python爬取电影天堂包含的源码非常清晰,所以说零基础的Python新手也能够轻松学会,真的一点都不过分. 先看我们的部分代码与爬取到的结果: 爬取到的电影资源:(可以获取视频教程) 步骤: 1. 首先导入需要的模块 2. 获取网页信息.解析结果 3.存储结果 3.编写主函数 4.运行源代码 工具: VS Code.Python3 Python最新爬取电影天堂源代码,跑代码即可爬取资源 源代码背后都有相关解释,各步骤我不进行相关讲解的原因. 原文地址:https://www.cnbl

java抓取12306火车余票信息

最近在弄一个微信的公众帐号,涉及到火车票查询,之前用的网上找到的一个接口,但只能查到火车时刻表,12306又没有提供专门的查票的接口.今天突然想起自己直接去12306上查询,抓取查询返回的数据包,这样就可以得到火车票的信息.这里就随笔记一下获取12306余票的过程. 首先,我用firefox浏览器上12306查询余票.打开firefox的Web控制台,选上网络中的"记录请求和响应主体" 然后输入地址日期信息之后点击网页上的查询按钮,就能在Web控制台下看到网页请求的地址了: 就是图片中

java 抓取网页图片

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86

java抓取网页数据,登录之后抓取数据。

最近做了一个从网络上抓取数据的一个小程序.主要关于信贷方面,收集的一些黑名单网站,从该网站上抓取到自己系统中. 也找了一些资料,觉得没有一个很好的,全面的例子.因此在这里做个笔记提醒自己. 首先需要一个jsoup的jar包,我用的1.6.0..下载地址为:http://pan.baidu.com/s/1mgqOuHa 1,获取网页内容(核心代码,技术有限没封装). 2,登录之后抓取网页数据(如何在请求中携带cookie). 3,获取网站的ajax请求方法(返回json). 以上这三点我就用一个类

jsoup实现java抓取网页内容。

Java 程序在解析 HTML 文档时,相信大家都接触过 htmlparser 这个开源项目,我曾经在 IBM DW 上发表过两篇关于 htmlparser 的文章,分别是:从 HTML 中攫取你所需的信息和 扩展 HTMLParser 对自定义标签的处理能力.但现在我已经不再使用 htmlparser 了,原因是 htmlparser 很少更新,但最重要的是有了 jsoup . jsoup 是一款 Java 的 HTML 解析器,可直接解析某个 URL 地址.HTML 文本内容.它提供了一套非

用 Java 抓取优酷、土豆等视频

1. [代码][JavaScript]代码  import org.jsoup.Jsoup;import org.jsoup.nodes.Document;import org.jsoup.nodes.Element;import org.jsoup.select.Elements; /*** 视频工具类* @author sunlightcs* 2011-4-6* http://hi.juziku.com/sunlightcs/*/public class VideoUtil {       

Java学习-025-类名或方法名应用之一 -- 调试源码

上文讲述了如何获取类名和方法名,敬请参阅: Java学习-024-获取当前类名或方法名二三文 . 通常在应用开发中,调试或查看是哪个文件中的方法调用了当前文件的此方法,因而在实际的应用中需要获取相应的包名.类名.方法名.行数,从而快速定位,及统计方法被调用的次数,生成类方法关系链. 相信爱钻研的小主们,通过上篇文章,已经懂得了,如何获取主调方法.从调方法.那我直接上码了,敬请各位小主参阅,若有不足之处,敬请各位大神指正,不胜感激! GetClassMethodName.java 源码内容如下所示

java画图程序_图片用字母画出来_源码发布_版本二

在上一个版本:java画图程序_图片用字母画出来_源码发布 基础上,增加了图片同比例缩放,使得大像素图片可以很好地显示画在Notepad++中. 项目结构: 运行效果1: 原图:http://images.cnblogs.com/cnblogs_com/hongten/356471/o_imagehandler_result1.png 运行效果2: 原图:http://images.cnblogs.com/cnblogs_com/hongten/356471/o_imagehandler_res

java画图程序_图片用字母画出来_源码发布

在之前写了一篇blog:java画图程序_图片用字母画出来 主要是把一些调试的截图发布出来,现在程序调试我认为可以了(当然,你如果还想调试的话,也可以下载源码自己调试). 就把源码发布出来. 项目结构: 资源文件: 原图:http://images.cnblogs.com/cnblogs_com/hongten/356471/o_imagehandler_resource.png 运行效果: 原图:http://images.cnblogs.com/cnblogs_com/hongten/356