Web Crawling (pages activées Ajax / JavaScript) en utilisant Java
Je suis très nouveau à cette analyse web. Je suis à l'aide de crawler4j pour analyser les sites. Je suis la collecte de l'information requise par l'analyse de ces sites. Mon problème, c'est que j'ai été incapable d'analyser le contenu pour le site suivant. http://www.sciencedirect.com/science/article/pii/S1568494612005741. Je veux analyser les informations suivantes à partir du site susmentionné (Veuillez jeter un oeil à la capture d'écran jointe).
Si vous observez la capture d'écran jointe, il y a trois noms (mis en évidence dans les cases rouges). Si vous cliquez sur le lien, vous verrez une fenêtre et que popup contient l'ensemble des informations concernant cet auteur. Je veux analyser les informations qui sont là, dans le popup.
J'utilise le code suivant pour analyser le contenu.
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);
}
}
J'ai été en mesure d'analyser le contenu à partir du lien ci-dessus/site. Mais il n'a pas l'information que j'ai marqué dans les cases rouges. Je pense que ceux sont les liens dynamiques.
- Ma question est comment puis-je analyser le contenu à partir du lien ci-dessus/site...???
- Comment analyser le contenu de l'Ajax/JavaScript, des sites web...???
Svp quelqu'un peut m'aider sur ce point.
Merci & Cordialement,
Amar
source d'informationauteur Amar
Vous devez vous connecter pour publier un commentaire.
Bonjour j'ai trouvé la solution avec la une autre bibliothèque. J'ai utilisé
Selinium WebDriver (org.openqa.le sélénium.WebDriver) bibliothèque pour extraire le contenu dynamique. Voici un exemple de code.
Ici le "htmlContent" est requis. S'il vous plaît laissez-moi savoir si vous rencontrez des problèmes...???
Grâce,
Amar
Simplement dit, Crawler4j est statique robot. Ce qui signifie qu'il ne peut pas analyser le JavaScript sur une page. Donc, il n'y a aucun moyen d'en obtenir le contenu que vous voulez par de l'analyse de cette page spécifique que vous avez mentionné. Bien sûr, il ya quelques solutions de contournement pour le faire fonctionner.
Si c'est juste cette page que vous souhaitez analyser, vous pouvez utiliser une connexion débogueur. Découvrez cette question pour certains outils. Découvrez la page de l'AJAX de demande d'appels, d'analyse et de cette page.
Si vous avez de différents sites web qui ont un contenu dynamique (JavaScript/ajax), vous devez envisager d'utiliser une dynamique de contenu activé robot, comme Crawljax (aussi écrit en Java).