私はこのウェブクロールに非常に慣れていません。私はクローラー4jを使用してWebサイトをクロールしています。これらのサイトをクロールして必要な情報を収集しています。ここでの問題は、次のサイトのコンテンツをクロールできなかったことです。http://www.sciencedirect.com/science/article/pii/S1568494612005741 . 前述のサイトから次の情報をクロールしたい (添付のスクリーンショットをご覧ください)。
添付のスクリーンショットを見ると、3 つの名前があります (赤いボックスで強調表示)。リンクの 1 つをクリックするとポップアップが表示され、そのポップアップにはその作成者に関するすべての情報が含まれています。そのポップアップにある情報をクロールしたい。
次のコードを使用してコンテンツをクロールしています。
public class WebContentDownloader {
private Parser parser;
private PageFetcher pageFetcher;
public WebContentDownloader() {
CrawlConfig config = new CrawlConfig();
parser = new Parser(config);
pageFetcher = new PageFetcher(config);
}
private Page download(String url) {
WebURL curURL = new WebURL();
curURL.setURL(url);
PageFetchResult fetchResult = null;
try {
fetchResult = pageFetcher.fetchHeader(curURL);
if (fetchResult.getStatusCode() == HttpStatus.SC_OK) {
try {
Page page = new Page(curURL);
fetchResult.fetchContent(page);
if (parser.parse(page, curURL.getURL())) {
return page;
}
} catch (Exception e) {
e.printStackTrace();
}
}
} finally {
if (fetchResult != null) {
fetchResult.discardContentIfNotConsumed();
}
}
return null;
}
private String processUrl(String url) {
System.out.println("Processing: " + url);
Page page = download(url);
if (page != null) {
ParseData parseData = page.getParseData();
if (parseData != null) {
if (parseData instanceof HtmlParseData) {
HtmlParseData htmlParseData = (HtmlParseData) parseData;
return htmlParseData.getHtml();
}
} else {
System.out.println("Couldn't parse the content of the page.");
}
} else {
System.out.println("Couldn't fetch the content of the page.");
}
return null;
}
public String getHtmlContent(String argUrl) {
return this.processUrl(argUrl);
}
}
前述のリンク/サイトからコンテンツをクロールできました。しかし、赤いボックスでマークした情報がありません。それらは動的リンクだと思います。
- 私の質問は、前述のリンク/ウェブサイトからコンテンツをクロールするにはどうすればよいですか...???
- Ajax/JavaScript ベースの Web サイトからコンテンツをクロールする方法...???
誰でもこれについて私を助けてください。
よろしくお願いします、 アマール