Groovy htmlunit getFirstByXPath返回null+;光学字符识别问题

Groovy htmlunit getFirstByXPath返回null+;光学字符识别问题,html,groovy,screen-scraping,htmlunit,Html,Groovy,Screen Scraping,Htmlunit,我最近遇到了一些HtmlUnit返回空值的问题,我正在寻求指导。我抓取网站第一行的每个结果都返回null。我想知道是否有人可以 A)解释它们可能返回null的原因 B)解释获取信息的更好方法(如果有的话) 以下是我的当前代码(URL位于源代码中): 现在,我所有的XPath都返回null,并且.getValue()显然不适用于null 我也有一些问题,我应该如何处理端口,因为它是一个图像?有没有比下载并尝试通过OCR解决更好的选择? 旁注 这个网站没有什么意义,我只是在寻找一个我可以练习抓取的网

我最近遇到了一些HtmlUnit返回空值的问题,我正在寻求指导。我抓取网站第一行的每个结果都返回null。我想知道是否有人可以

A)解释它们可能返回null的原因

B)解释获取信息的更好方法(如果有的话)

以下是我的当前代码(URL位于源代码中):

现在,我所有的XPath都返回null,并且.getValue()显然不适用于null

我也有一些问题,我应该如何处理端口,因为它是一个图像?有没有比下载并尝试通过OCR解决更好的选择?

旁注


这个网站没有什么意义,我只是在寻找一个我可以练习抓取的网站(上一个我遇到碎片标识问题,无法得到答案:and)

看起来你的xpath查询不正确。根据代码示例中提供的url,表单元素应从搜索路径中删除

下面是一个xpath查询,当页面布局发生更改时,该查询不太容易中断

//table[@id='proxylist-table']/tbody/tr/td[2]
就端口号而言,该页面的作者一定希望该部分数据不会因为某种原因而被删除。做OCR可能是你最好的选择


然而,您可以做的一件事是查看返回的图像的大小来猜测端口号。例如,我注意到显示端口80的图像的内容长度都是406或411。端口8080是402或409。图像有两种不同的大小以与行颜色混合。如果Url以1结尾,它将有一个白色的背景,如果它以0结尾,它将有一个浅灰色的背景,并且总是大一些字节。这种方法有明显的缺点,但可能有效。

您的xpath查询似乎不正确。根据代码示例中提供的url,表单元素应从搜索路径中删除

下面是一个xpath查询,当页面布局发生更改时,该查询不太容易中断

//table[@id='proxylist-table']/tbody/tr/td[2]
就端口号而言,该页面的作者一定希望该部分数据不会因为某种原因而被删除。做OCR可能是你最好的选择


然而,您可以做的一件事是查看返回的图像的大小来猜测端口号。例如,我注意到显示端口80的图像的内容长度都是406或411。端口8080是402或409。图像有两种不同的大小以与行颜色混合。如果Url以1结尾,它将有一个白色的背景,如果它以0结尾,它将有一个浅灰色的背景,并且总是大一些字节。这种方法有明显的缺点,但可能有效。

我使用firebug获得了包含表单的XPath(我认为这是正确的)。但是,即使从XPath中删除表单,也会返回null。感谢您的响应,Aaron,这让我重新检查了XPath,我现在将其更改为:/html/body//table/tbody/tr/td[2],它似乎为我提供了该值的正确信息。这一部分已经解决了(现在),所以剩下的只有我的另一部分questions@StartingGroovy-我更新了一个更好的XPath查询,并为您关于端口号是图像的问题添加了一个答案。感谢您的回答,非常感谢:)我使用firebug获得了包含表单的XPath(我认为它是正确的)。但是,即使从XPath中删除表单,也会返回null。感谢您的响应,Aaron,这让我重新检查了XPath,我现在将其更改为:/html/body//table/tbody/tr/td[2],它似乎为我提供了该值的正确信息。这一部分已经解决了(现在),所以剩下的只有我的另一部分questions@StartingGroovy-我更新了一个更好的XPath查询,并为您关于端口号是图像的问题添加了一个答案。感谢您的回答,非常感谢:)