最近,我在HtmlUnit返回空的过程中遇到了一些问题,我正在寻求指导。我每个抓取网站第一行的结果都返回null。我想知道是否有人能
A)解释为什么它们可能返回null
B)解释了更好的方法(如果有的话)来获取信息
下面是我的当前代码(URL在源代码中):
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 null和HtmlUnit and Fragment Identities )
发布于 2011-01-08 19:05:19
xpath查询看起来不正确。根据代码示例中提供的url,表单元素应该从搜索路径中删除。

下面是一个xpath查询,当页面布局发生变化时,该查询不太容易中断。
//table[@id='proxylist-table']/tbody/tr/td[2]就端口号而言,该页面的作者一定希望该部分数据不会因为某种原因而被刮掉。做OCR可能是你最好的选择。
但是,您可以做的一件事是查看返回的图像的大小来猜测端口号。例如,我注意到显示端口80的图像都有406或411的内容长度。端口8080为402或409。图像有两种不同的大小,可以与行的颜色混合。如果Url以1结尾,它将有一个白色的背景,如果以0结尾,它将有一个浅灰背景,并且总是大一些字节。这种方法有明显的缺点,但它可能有效。
https://stackoverflow.com/questions/4635374
复制相似问题