jsoup を使用して、html ページからデータを抽出しています。ページに iframe が 1 つしかない場合は、データを抽出できます。ただし、ページに別の iframe を開くリンクがある場合、2 番目の iframe からデータを抽出し、すべてのデータを 1 つの xml ファイルに書き込むにはどうすればよいですか。これについて私を助けてください。
質問する
3336 次
1 に答える
3
1 つの方法は、iframe タグの親 Web サイトを解析し、「src」を抽出することです。「src」値を使用して、各 iframe コンテンツをダウンロードして解析することができます。本当に必要な場合は、それらを結合することもできます。
String url = "http://example.com/";
Document document = Jsoup.connect("url").get();
Elements es = document.select("iframe");
String[] iframesrc;
int iframeCount = es.size();
iframesrc = new String [iframeCount];
//extract iFrame sources:
int i=0;
for(Element e : es)
{
iframesrc[i] = e.getElementsByTag("iframe").attr("src");
i++;
}
//get iFrame content
Document [] iframeDoc;
iframeDoc = new Document[iframeCount];
int j = 0;
for (String s : iframesrc){
iframeDoc[j] = Jsoup.connect("url"+iframesrc[j]).get(); //pay attention that the correct url is built at this point!!!
j++;
}
/*now you got the parent site as well as the iframe "childs" as documents. I've no experience in combining Documents. If nothing works you may try document.tostring()*/
ドキュメントをファイルに書き込むには、次のコードを使用します。
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import org.jsoup.nodes.Document;
public class Write2File {
public static void saveFile(Document xmlContent, String saveLocation) throws IOException {
FileWriter fileWriter = new FileWriter(saveLocation);
BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);
bufferedWriter.write(xmlContent.toString());
bufferedWriter.close();
System.out.println("File writing completed.");
}
}
于 2012-06-10T00:28:19.687 に答える