1

我正在使用 Groovy 进行编码,但是,我不相信它是一组特定于语言的问题。

我其实有两个问题

第一个问题

我在使用 HtmlUnit 时遇到了问题。它告诉我,我试图抓住的东西是空的。

我正在测试它的页面是: http ://browse.deviantart.com/resources/applications/psbrushes/?order=9&offset=0#/dbwam4

我的代码:

client = new WebClient(BrowserVersion.FIREFOX_3)
client.javaScriptEnabled = false

page = client.getPage(url)

//coming up as null
title = page.getByXPath("//html/body/div[4]/div/div[3]/div/div/div/div/div/div/div/div/div/div/h1/a")

println title

这只是打印出来:[]

这是因为页面使用onclick()吗?如果是这样,我将如何解决这个问题?启用 javascript 会在我的 cmd 提示符中造成混乱。

第二个问题

我也想获取图像但遇到了麻烦,因为当我尝试获取 XPath(通过萤火虫)时,它显示为://*[@id="gmi-ResViewSizer_img"]

我该如何处理?

4

2 回答 2

1

第一个答案:

/html/body/div[3]/div/div[3]/div/div/div/div/div/div/div/div/div/div/h1/a

您的 XPATH 在div身体第 4 个的谓词过滤器中偏离了一个,它应该是第 3 个div。与您最初使用 Firebug 获取 XPATH 时相比,该站点的 HTML 似乎可以/确实发生了变化。您可能需要调整 XPATH 以适应潜在的变化,并且对文档结构的某些差异不太敏感。

也许是这样的:

/html/body//div/h1/a

第二个答案:您列出的 XPATH 将起作用。它可能看起来很奇怪/很短(并且可能不是最有效的),但从//根节点开始并查看树中的每个节点,*匹配任何元素(包括img)并且[]谓词过滤器将其限制为具有id值等于“gmi-ResViewSizer_img”的属性。

XPATH 还有许多其他选项也可以使用。它还取决于 HTML 结构更改的频率。这也适用于引用的页面来选择img

/html/body/div/div/div/div/img[1]
于 2010-12-01T02:26:45.630 回答
0

我有同样的问题,当我在页面上实现 iframe 标签时解决了,尝试调用

((HtmlPage)current_page.getFrames()[n].getEnclosedPage()).getElementByXPath(...

其中 n 是 iframe 集合中 frame 中的位置。这对我有用!!!

非常感谢。

于 2011-01-02T21:33:55.040 回答