【问题标题】:Running HtmlUnit with Jython - issue with startup on command line使用 Jython 运行 HtmlUnit - 在命令行启动时出现问题
【发布时间】:2011-10-13 18:08:09
【问题描述】:

我尝试按照本教程使用 Jython 运行 HtmlUnit:

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”。但是 Jython.org 上甚至没有关于 -J-classpath 参数的消息。我会很高兴有任何建议。我在 Snow Leopard 上运行 jython 独立 v. 2.5.2

【问题讨论】:

  • 您好,您可以运行程序了吗?

标签: java python jython htmlunit


【解决方案1】:

java 命令正在处理您的整个命令行(应该如此),并且 -J-classpath 确实不是java 的有效命令行选项。您真的应该尝试按照教程的确切步骤进行操作,因为您遗漏了几个重要步骤(以及您自己的步骤)。

【讨论】:

  • 我有点困惑。那么如何在没有 Java 的情况下运行 Jython?
  • 优秀。祝项目的其余部分好运!
  • 你做了什么来解决这个问题? -J-classpath 不是 jython 的有效参数。
【解决方案2】:

如果脚本使用脚本需要运行的 jar 的 sys.path.append 将完整的 url 附加到 python 路径,则可以将 Jython 脚本运行为:jython myscript.py。

这是我正在编写的当前脚本。

#!/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()

【讨论】:

【解决方案3】:

我以前遇到过这样的错误,按照这些步骤我成功解决了。

  1. 下载jython并运行java -jar python-installer-xxx.jar安装jython,然后你可以将jython/bin文件夹放到你的系统路径下,在命令行中运行jython确保没问题。
  2. 在 sourceforge 中下载 htmlunit jar 文件,您需要指定其位置。
  3. 编写你的 .py 文件并运行

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

一切都会好起来的,如果你仍然错过找不到模块,也许你应该检查你的输入命令类型错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-02
    • 2022-01-12
    • 2011-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多