1

ソース コードを 2 回スクレイピングし、取得したデータから特定の情報を含む CSV を作成するプログラムを作成しました。私の問題は、データの 2 番目のビットを保存しようとすると、作成された CSV に追加するのではなく、新しい情報で上書きされることです。このリンクを参照しましたが、別のクラスを使用しています。私のコードは現在:

  public static void scrapeWebsite() throws IOException {


    final WebClient webClient = new WebClient();
    final HtmlPage page = webClient.getPage(s);
    originalHtml = page.getWebResponse().getContentAsString();
    obtainInformation();
    originalHtml = "";
    final HtmlForm form = page.getForms().get(0);
    final HtmlSubmitInput button = form.getInputByValue(">");
    final HtmlPage page2 = button.click();
    try {
      synchronized (page2) {
        page2.wait(1000);
      }
    }
    catch(InterruptedException e)
    {
      System.out.println("error");
    }
    originalHtml = originalHtml + page2.refresh().getWebResponse().getContentAsString();
    obtainInformation();
  }

  public static void obtainInformation() throws IOException {

     PrintWriter docketFile = new PrintWriter(new FileWriter("tester3.csv", true));

// csv ファイルを作成します。(名前を変更する必要があり、上書きするとファイルが削除されます) originalHtml = originalHtml.replace('"','*'); int i = 0;

    //While loop runs through all the data in the source code. There is (14) entries per page.
    while(i<14) {
      String plaintiffAtty = "PlaintiffAtty_"+i+"*>"; //creates the search string for the plaintiffatty
      Pattern plaintiffPattern = Pattern.compile("(?<="+Pattern.quote(plaintiffAtty)+").*?(?=</span>)");//creates the pattern for the atty
      Matcher plaintiffMatcher = plaintiffPattern.matcher(originalHtml); // looks for a match for the atty

      while (plaintiffMatcher.find()) {
        docketFile.write(plaintiffMatcher.group().toString()+", "); //writes the found atty to the file
      }
      i++;
    }
    docketFile.close(); //closes the file 
  } 
}

変更は2番目の方法で行う必要があると思います。

4

2 に答える 2

3

追加コンストラクタのブール値を true に設定して構築されたFileWriterPrintWriterを参照する必要があります。

例えば

new PrintWriter(new FileWriter("myfile.csv", true));

FileWriterreの Javadoc に注意してください。あなたのエンコーディング仕様:

文字ファイルを書き込むための便利なクラス。このクラスのコンストラクターは、既定の文字エンコーディングと既定のバイト バッファー サイズが受け入れられると想定しています。これらの値を自分で指定するには、FileOutputStream で OutputStreamWriter を作成します。

于 2013-10-24T16:25:42.140 に答える
2

ファイルに追加しようとしているようですが、PrintWriter を追加モードで開いていません。

追加しないPrintWriter追加メソッドを参照してください

于 2013-10-24T16:25:49.797 に答える