L'exécution de javascript en java - Ouverture d'une URL et obtenir des liens
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import java.io.FileReader;
public class Main {
public static void main(String[] args) {
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("js");
try {
FileReader reader = new FileReader("C:/yourfile.js");
engine.put("urlfromjava", "http://www.something.com/?asvb");
engine.eval(reader);
reader.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
Droit maintenant, le yourfile.js contient cette ligne
function urlget(url)
{
print("URL:"+url);
var loc = window.open(url);
var link = document.getElementsByTagName('a')["61"].href;
return ("\nLink is: \n"+link);
}
var x = urlget(urlfromjava);
print(x);
Je reçois le message d'erreur
"javax.script.ScriptException: sun.org.mozilla.javascript.internal.EcmaError: ReferenceError: "window" is not defined"
Comment ouvrir un URL et obtenir les liens de java?
OriginalL'auteur harihb | 2011-05-22
Vous devez vous connecter pour publier un commentaire.
Selon la la documentation:
Puisque vous n'êtes pas à l'exécution de votre script dans un navigateur, la fenêtre de l'objet n'est pas définie.
Vous pouvez lire les URL à l'aide de l'URL/URLConnecion classes et le nourrir à la ScriptEngine. Il y a un tutoriel ici.
J'aime la réponse, à l'exception, w3schools est autant de "la documentation" comme wikipédia ou aléatoire web de résultat de recherche. Si les deux premières lignes de cette réponse sont incorrectes.
Je suis surpris personne n'a dit que vous utiliser JavaFX. Vous pouvez obtenir headlessness à l'aide d'un JFrame.
OriginalL'auteur iruediger
vous pouvez incorporer Env.js dans Rhino pour obtenir ce type de fonctionnalité
OriginalL'auteur Grooveek
En javascript
window
moyens fenêtre du navigateur. Ainsi, lorsque vous essayez d'exécuter cette js à partir de Java, il est impossible de trouver la fenêtre du navigateur et que vous obtenez l'erreur. Vous pouvez utiliser des URL de classe en Java pour obtenir le contenu de l'url.vous pouvez analyser la chaîne à l'aide de regex modèle.
Le lien n'est pas là dans le source de la page. Il est chargé par javascript exécuté côté serveur.
OriginalL'auteur Tapos
essayez ceci:
Le problème est, le lien de la page est généré par javascript. De sorte qu'après l'URL est chargé, fera le lien arriver. c'est à dire, il n'est pas là dans le source du fichier html. C'est pourquoi, après le chargement de l'url, je ne document.getElementByTagName('a') plutôt que d'utiliser l'URL classe en java pour extraire les liens.
URL.openConnection émule ce navigateur du client le fait que vous obtenez exactement la même balise que vous obtenez par le biais du navigateur. Essayer et je crois que vous verrez que cela fonctionne. Si je tdoes pas laissez-moi savoir ce que vous obtenez et nous pourrions essayer de travailler davantage.
Sûr, va faire et dire.
OriginalL'auteur aviad