ソース コードを 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番目の方法で行う必要があると思います。