首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >getFirstByXPath返回null + OCR问题

getFirstByXPath返回null + OCR问题
EN

Stack Overflow用户
提问于 2011-01-08 18:15:50
回答 1查看 1.3K关注 0票数 1

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

A)解释为什么它们可能返回null

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

下面是我的当前代码(URL在源代码中):

代码语言:javascript
复制
client = new WebClient(BrowserVersion.FIREFOX_3)
client.javaScriptEnabled = false

def url = "http://www.hidemyass.com/proxy-list/"

page = client.getPage(url)

IpAddress = page.getFirstByXPath("//html/body/div/div/form/table/tbody/tr/td[2]").getValue()
println "IP Address is: $data"          //returns null

//Port_Number is an Image

Country = page.getFirstByXPath("//html/body/div/div/form/table/tbody/tr/td[4][@class='country']/@rel").getValue()
println "Country abbreviation is: $Country"

//differentiate speed and connection by name of gif?

Type = page.getFirstByXPath("//html/body/div/div/form/table/tbody/tr/td[7]").getValue()
println "Proxy type is: $Type"

Anonymity = page.getFirstByXPath("//html/body/div/div/form/table/tbody/tr/td[8]").getValue()
println "Anonymity Level is: $Anonymity"

client.closeAllWindows()

现在,我的所有XPaths都返回null,而.getValue()显然不能在null上工作。

,我也对端口有什么疑问,因为它是图像吗?是否有更好的选择比下载并试图通过OCR解决它呢?

边注

这个网站没有任何意义,我只是在找一个我可以练习刮的网站(上一次我遇到了片段标识问题,但没有得到答案:HtmlUnit getByXpath returns nullHtmlUnit and Fragment Identities )

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-01-08 19:05:19

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

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

代码语言:javascript
复制
//table[@id='proxylist-table']/tbody/tr/td[2]

就端口号而言,该页面的作者一定希望该部分数据不会因为某种原因而被刮掉。做OCR可能是你最好的选择。

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4635374

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档