使用jsoup和coldfusion进行html解析

使用jsoup和coldfusion进行html解析,coldfusion,jsoup,Coldfusion,Jsoup,这是我生命的延续。下面是我试图构建的用于解析HTML的脚本,它类似于下面的示例。我收到错误使用前必须初始化值。无法附加错误 我必须使用jsoup进行http调用,其中我需要为服务器登录提供用户名和密码。下面的代码是正确的方法吗?我研究了使用jsoup进行html解析的方法 我的申请表中有这个 component { this.name = "jsoupTest"; this.javaSettings = {loadPaths=["/jsoup/jsoup-

这是我生命的延续。下面是我试图构建的用于解析HTML的脚本,它类似于下面的示例。我收到错误使用前必须初始化值。无法附加错误

我必须使用jsoup进行http调用,其中我需要为服务器登录提供用户名和密码。下面的代码是正确的方法吗?我研究了使用jsoup进行html解析的方法


我的申请表中有这个

component {
  this.name = "jsoupTest";
  this.javaSettings = {loadPaths=["/jsoup/jsoup-1.7.3.jar"], loadColdFusionClassPath=true};
}

要解析的HTML示例 请注意,至少有5000行(如下图所示)需要解析,并且仅从TD中提取文本


小罗伯特·M·贝斯特。
AAI
1.
国会议员
顺应顺应顺应顺应顺应顺应顺应顺应顺应顺应顺应顺应顺应顺应顺应顺应顺应顺应顺应顺应顺应顺应顺应顺应顺应顺应顺应顺应顺应顺应顺应顺应顺应顺应顺应顺应顺应顺应顺应顺应顺应顺应顺应顺应顺应顺应顺应顺应顺应顺应顺应顺应顺应顺应顺应顺应顺应
小罗伯特·M·贝斯特。
ABWS
4.
NMC
顺应顺应顺应顺应顺应顺应顺应顺应顺应顺应顺应顺应顺应顺应顺应顺应顺应顺应顺应顺应顺应顺应顺应顺应顺应顺应顺应顺应顺应顺应顺应顺应顺应顺应顺应顺应顺应顺应顺应顺应顺应顺应顺应顺应顺应顺应顺应顺应顺应顺应顺应顺应顺应顺应顺应顺应顺应

要使用的更新代码


看起来它不起作用的原因是您没有调用Jsoup类的构造函数

试着换一行

var jSoupClass = createObject( "java", "org.jsoup.Jsoup" ).init(); // note calling init calls the constructor for the Java class

您是否正确安装了jar文件

ColdFusion按以下顺序搜索对象:

  • ColdFusion Java动态类加载目录:
  • web\u root/web-INF/lib中的Java存档(.jar)文件
  • web\u root/web-INF/classes中的类(.Class)文件
  • 引自:


    因此,将jar文件复制到
    web\u root/web-INF/lib
    ,重新启动CF,然后重试。

    在parse命令中第一次声明myPage变量

    我认为您需要将result=“myPage”添加到cfhttp调用中

    <cfhttp result="myPage" url="https://intra.att.com/itscmetrics/EM2/LTMR.cfm" method="get" username="abc" password="zxyr">
    
    
    
    “下面的代码是正确的方法吗?”-有效吗?如果没有,您会收到什么错误/意外结果?一般来说,您可以使用cfhttp执行HTTP请求并将cfhttp.FileContent传递给jSoup。(这可能是一个比通过jSoup进行HTTP更好/更差的选择。)此外,虽然您的问题还不错,但请查看以使其更具结构/可读性-特别是子标题有助于标记哪些代码是哪些代码。谢谢Peter,请记住结构。你能给我一个如何将cfhttp.FileContect传递给jsoup的例子吗?它只是
    dom=jsoupClass.parse(cfhttp.FileContent)
    我很确定它是
    .first().text()
    。可能是
    .first()
    以某种方式返回了null?除了这一行,其他一切看起来都很好。我已经转储了jSoupClass并尝试了init方法,它没有抛出任何错误,只是加载了一个空白页面。当我查看源代码时,我什么也看不到……我的jar文件位于当前目录中名为jsoup的文件夹中……在服务器上我看不到任何lib或jars文件夹……
    createObject(“java”,“org.jsoup.jsoup”)。parse(html)
    很好,因为
    parse
    是一种
    static
    方法是的,但这会引发不同的错误。如果查看错误屏幕截图,OP实际上使用了变量
    cfhttp.filecontent
    ,而不是
    myPage
    。如果运行代码并转储每个对象,则可以看到问题是。其中一个方法调用返回
    null
    ,这就是导致“.Value必须在使用之前初始化…”错误的原因。
    var jSoupClass = createObject( "java", "org.jsoup.Jsoup" ).init(); // note calling init calls the constructor for the Java class
    
    <cfhttp result="myPage" url="https://intra.att.com/itscmetrics/EM2/LTMR.cfm" method="get" username="abc" password="zxyr">