3 votes

Exécuter HtmlUnit avec Jython - problème de démarrage en ligne de commande

J'ai essayé d'exécuter HtmlUnit avec Jython en suivant ce tutoriel :

http://blog.databigbang.com/web-scraping-ajax-and-javascript-sites/

mais cela ne fonctionne pas pour moi. Je ne parviens pas à importer les com.gargoylesoftvare il n'y a que quelques fichiers HTML dans le dossier HtmlUnit, que je dois importer d'une manière ou d'une autre ?

Le tutoriel dit de lancer python script comme ceci :

/opt/jython/jython -J-classpath "htmlunit-2.8/lib/*" gartner.py

et j'essaie de courir :

java -jar /Users/adam/jython/jython.jar -J-classpath "htmlunit-2.8/lib/*" gartner.py

Mon problème est que j'obtiens un message "Unknown option : J-classpath". Mais il n'y a même pas de mot sur le paramètre -J-classpath sur Jython.org. Je serais TRES heureux d'avoir des conseils. J'utilise jython standalone v. 2.5.2 sur Snow Leopard.

1voto

Perception Points 42290

Toute votre ligne de commande est traitée par le programme java (comme il se doit), et -J-classpath n'est en effet pas une option de ligne de commande valide pour java . Vous devriez vraiment essayer de suivre les étapes exactes du tutoriel, car vous omettez plusieurs étapes importantes (et vous inventez en quelque sorte vos propres étapes).

1voto

user1086944 Points 11

Il est possible d'exécuter un script Jython sous la forme : jython myscript.py si le script ajoute l'url complète au chemin python en utilisant sys.path.append des jars qu'un script nécessitera pour s'exécuter.

Voici un script sur lequel je travaille actuellement.

#!/opt/jython/jython
'''
Created on Dec 7, 2011
@author: chris
'''
import sys, os
from time import sleep

jarpath = '/usr/share/java/htmlunit/' #path the jar files to import
jars = ['apache-mime4j-0.6.jar','commons-codec-1.4.jar',
    'commons-collections-3.2.1.jar','commons-io-1.4.jar',
    'commons-lang-2.4.jar','commons-logging-1.1.1.jar',
    'cssparser-0.9.5.jar','htmlunit-2.8.jar',
    'htmlunit-core-js-2.8.jar','httpclient-4.0.1.jar',
    'httpcore-4.0.1.jar','httpmime-4.0.1.jar',
    'nekohtml-1.9.14.jar','sac-1.3.jar',
    'serializer-2.7.1.jar','xalan-2.7.1.jar',
    'xercesImpl-2.9.1.jar','xml-apis-1.3.04.jar'] #a list of jars

def loadjars(): #appends jars to jython path
    for jar in jars:
        print(jarpath+jar+'\n')
        container = jarpath+jar
        sys.path.append(container)

loadjars()

import com.gargoylesoftware.htmlunit.WebClient as WebClient
webclient = WebClient()   

def gotopage():
    print('hello, I will visit Google')
    url = 'http://google.com'
    page = webclient.getPage(url)
    print(page)    

if __name__ == "__main__":
    gotopage()

0voto

Crabime Points 311

J'ai déjà rencontré ce type d'erreur, et en suivant ces étapes, je l'ai résolue avec succès.

  1. télécharger jython et l'exécuter java -jar python-installer-xxx.jar pour installer jython, alors vous pouvez mettre jython/bin dans le chemin d'accès de votre système, exécutez jython en ligne de commande pour s'assurer que tout va bien.
  2. téléchargez les fichiers jar de htmlunit sur sourceforge et vous devez spécifier son emplacement.
  3. écrivez votre fichier .py et exécutez

    jython -J-classpath "/Users/crabime/Development Folder/htmlunit-2.23/lib/*" /Users/crabime/PycharmProjects/scrapimage/crabime/gartner.py

Tout va bien, si vous ne trouvez toujours pas de module, vous devriez peut-être vérifier le type d'erreur de votre commande d'entrée.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X