2011-10-13 44 views
3

我嘗試下面這個教程使用Jython運行的HtmlUnit:使用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-類路徑」。但是在Jython.org上甚至沒有關於-J-classpath參數的信息。我會非常樂意提供任何建議。我在Snow Leopard上運行的Jython獨立的訴2.5.2

+0

嗨,你能夠運行該程序? –

回答

1

你的整個命令行正在被java命令處理(因爲它應該),以及-J-類路徑的確不是一個有效的命令行選項java。你應該真的嘗試遵循教程的確切步驟,因爲你錯過了幾個重要步驟(以及自己制定步驟)。

+0

我有點困惑。那麼如何在沒有Java的情況下運行Jython? – Meph

+0

我明白了。非常感謝! – Meph

+0

非常好。祝好運與其餘的項目! – Perception

1

可以將Jython腳本運行爲:jython myscript.py如果腳本使用腳本需要運行的jar的sys.path.append將完整url附加到python路徑。

這是我正在處理的當前腳本。

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

不起作用!使用htmlunit-2.16(http://sourceforge.net/projects/htmlunit/files/htmlunit/2.16/) – Ayush

+0

@Napstar下面是一個更新的版本,它自己下載依賴項:https://github.com/ysangkok/buddyledger- test/blob/master/integration-test.py它目前僅依賴於Bash,Curl和Java。 Jython,Ivy和HtmlUnit會自動下載。忽略Django的東西 –

0

我以前遇到這樣的錯誤,並且做了這些步驟我成功地解決了它。

  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

一切都會OK,如果你還在懷念沒有找到模塊,也許你應該檢查你的輸入指令類型的錯誤。