我正在尝试使用Jython中的Htmlunit模块废弃一个包含JavaScript的网站。
import com.gargoylesoftware.htmlunit.WebClient as WebClient
import com.gargoylesoftware.htmlunit.BrowserVersion as BrowserVersion
import com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException
import com.gargoylesoftware.htmlunit.html.HtmlPage
import com.gargoylesoftware.htmlunit.ScriptException
def main():
webClient = WebClient(BrowserVersion.CHROME) # creating a new webclient object.
webClient.waitForBackgroundJavaScript(50000)
webClient.setThrowExceptionOnScriptError(False)
webClient.setThrowExceptionOnFailingStatusCode(False)
url = "http://www.w3schools.com/js/DEFAULT.asp"
page = webClient.getPage(url) # getting the url
name = page.getByXPath("/html/body/div[3]/div/div/div[2]/h1/span")
print "name:", name[0].asText()
main()
我面临的错误:
Traceback (most recent call last):
File "C:\Eclipse\learnJython\src\HTMLunit_basic.py", line 20, in <module>
main()
File "C:\Eclipse\learnJython\src\HTMLunit_basic.py", line 11, in main
webClient.setThrowExceptionOnScriptError(False)
AttributeError: 'com.gargoylesoftware.htmlunit.WebClient' object has no attribute 'setThrowExceptionOnScriptError'
问题:即使我导入这些模块,Eclipse也显示这些模块未使用
import com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException
import com.gargoylesoftware.htmlunit.ScriptException
我正在导入这些模块以绕过JavaScript处理引起的错误,我想只关注某些特定的脚本,并且不希望htmlunit加载所有脚本。目前htmlunit正在加载所有脚本。 facebook插件被我们的公司网络阻止。
我是编程新手,请帮我解决这个问题。
答案 0 :(得分:1)
这个错误是有道理的。 setThrowExceptionOnScriptError
不再是WebClient
的一部分。它已移至WebClientOptions
类。
因此,要访问该方法,您需要调用:
webClient.getOptions().setThrowExceptionOnScriptError(False)