HtmlUnit - 无法从 div 获取锚点

Posted

技术标签:

【中文标题】HtmlUnit - 无法从 div 获取锚点【英文标题】:HtmlUnit - Unable to get anchors from div 【发布时间】:2014-04-14 14:58:18 【问题描述】:

我要定位的 html 页面的 divs 如下所示:

<div class="white-row1">
  <div class="results">
    <div class="profile">
      <a href="hrefThatIWant.com" class>
        <img src = "http://imgsource.jpg" border="0"  white-row2">
// same content as the div above
</div>

我想废弃收集列表中每个 div 中的 href。

这是我当前的代码:

List<HtmlAnchor> profileDivLinks = (List)htmlPage.getByXPath("//div[@class='profile']//@href"); 
for(HtmlAnchor link:profileDivLinks)

    System.out.println(link.getHrefAttribute());

这是我收到的错误(出现在 for 语句的第一行):

Exception in thread "main" java.lang.ClassCastException: com.gargoylesoftware.htmlunit.html.DomAttr cannot be cast to com.gargoylesoftware.htmlunit.html.HtmlAnchor 

你认为问题是什么?

【问题讨论】:

【参考方案1】:

问题是您正在获取一个属性,然后将该属性转换为锚点。我想对您的代码进行最小更改的解决方案就是修改 XPath 以返回一个锚点:

htmlPage.getByXPath("//div[@class='profile']//a"); 

【讨论】:

谢谢!这是有道理的。【参考方案2】:

试试

//div[@class='profile']//data(@href)

【讨论】:

以上是关于HtmlUnit - 无法从 div 获取锚点的主要内容,如果未能解决你的问题,请参考以下文章

如何从 DIV 重定向并绕过子锚点 href

htmlunit Socks 代理无法使用 HTTPS

HtmlUnit---网页抓取工具解析及使用

使用Jsoup和htmlunit爬取动态网页

无法滚动到锚点

在 HtmlUnit 中获取真正的 html 代码的问题