Запуск HtmlUnit с Jython - проблема с запуском в командной строке - PullRequest
3 голосов
/ 13 октября 2011

Я пытался запустить HtmlUnit с Jython, следуя этому руководству:

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

но у меня это не работает. Я не могу импортировать com.gargoylesoftvare пакеты, в папке HtmlUnit есть только некоторые HTML-файлы, которые мне нужно как-то импортировать?

В учебном пособии сказано, что скрипт Python запускается так:

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

и я пытаюсь запустить:

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

Моя проблема в том, что я получаю "Неизвестная опция: J-classpath". Но нет даже слова о параметре -J-classpath на Jython.org. Я был бы очень рад за любой совет. Я использую jython standalone v. 2.5.2 на Snow Leopard

Ответы [ 3 ]

1 голос
/ 08 декабря 2011

Сценарий Jython можно запустить как: jython myscript.py, если сценарий добавляет полный URL-адрес к пути python, используя sys.path.append jar-файлов, которые потребуется сценарию для запуска.

Вот текущий скрипт, над которым я работаю.

#!/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()
1 голос
/ 13 октября 2011

Вся ваша командная строка обрабатывается командой java (как и должно быть), и -J-classpath действительно не является допустимым параметром командной строки для java. Вы действительно должны стараться следовать точным шагам учебника, потому что вы пропустили несколько важных шагов (и вроде как составляете свои собственные шаги).

0 голосов
/ 18 сентября 2016

Я уже сталкивался с такой ошибкой раньше, и, выполнив эти шаги, я успешно ее решаю.

  1. загрузите jython и запустите java -jar python-installer-xxx.jar для установки jython, затем вы можете поместить папку jython/bin в системный путь, запустить jython в командной строке, чтобы убедиться, что все в порядке.
  2. загрузите htmlunit jar-файлы в sourceforge, и вам нужно указать его местоположение.
  3. напишите ваш .py файл и запустите

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

все будет хорошо, если вы все еще пропускаете модуль, не найденный, возможно, вам следует проверить ошибку ввода команды ввода.

...