当前位置: 首页 > 知识库问答 >
问题:

无法使用 tidy 和 Xpath 在 Java 中检索 Web 数据

燕刚捷
2023-03-14

我想做的是从XHTML文件中提取一个简单的内部HTML。我已将搜索范围缩小到元素节点,但检索不到信息。

请注意:元素节点没有子节点。我为此收到空指针异常

这里是超文本标记语言SNIPPET

    <div id="dvTitle" class="titlebtmbrdr01" style="line-height: 22px;">BAJAJ AUTO LTD.       </div>

请注意,此文件的命名空间为http://www.w3.org/1999/xhtml

您可以看到我有想要BAJAJ AUTO LTD的div元素。

这是我正在使用的代码

    import java.io.IOException;
     import java.net.MalformedURLException; 
      import java.net.URL;
      import java.util.Vector;

    import javax.xml.xpath.XPath;
    import javax.xml.xpath.XPathConstants;
    import javax.xml.xpath.XPathExpression;
      import javax.xml.xpath.XPathExpressionException;
    import javax.xml.xpath.XPathFactory;

    import jxl.read.biff.BiffException;
    import jxl.write.WriteException;
    import jxl.write.biff.RowsExceededException;

    import org.w3c.dom.Document;
    import org.w3c.dom.Element;
      import org.w3c.dom.Node;
      import org.w3c.dom.NodeList;
    import org.w3c.dom.Text;

    import com.sun.org.apache.xml.internal.serialize.Serializer;


    public class BSEQuotesExtractor implements valueExtractor {

@Override
public Vector<String> getName(Document d) throws XPathExpressionException,            RowsExceededException, BiffException, WriteException, IOException {
    // TODO Auto-generated method stub
    XPathFactory factory = XPathFactory.newInstance();
    XPath xpath = factory.newXPath();
    xpath.setNamespaceContext(new MynamespaceContext());


    Object result = xpath.evaluate("//*[@id='dvTitle']",d, XPathConstants.NODESET);
    NodeList nodes = (NodeList) result;

    System.out.println(nodes.getLength());
    System.out.println(nodes.item(0).getNodeName());
    System.out.println(nodes.item(0).getAttributes().item(1).getNodeName());
    System.out.println(nodes.item(0).getAttributes().item(1).getNodeValue());
    System.out.println(nodes.item(0).getTextContent());

    return null;
}

public static void main(String[] args) throws MalformedURLException, IOException, XPathExpressionException, RowsExceededException, BiffException, WriteException{
    BSEQuotesExtractor q = new BSEQuotesExtractor();
    DOMParser parser = new DOMParser(new URL("http://www.bseindia.com/bseplus/StockReach/StockQuote/Equity/BAJAJ%20AUTO%20LTD/BAJAJAUT/532977/Scrips").openStream());
    Document d = parser.getDocument();
    q.getName(d);

}

        }

这就是我得到的结果

1
div
dvTitle
null

现在为什么我会得到这个空?我应该得到BAJAJ AUTO LTD

共有1个答案

侯令雪
2023-03-14

当我打开您的代码引用的页面时,该 div 对我来说实际上是空的:

<div class="titlebtmbrdr01" id="dvTitle" style="line-height: 22px;"></div>

因此,也许您应该将页面内容保存到某个文件中,以检查它是否与您相同。如果是,但您的浏览器显示的内容不同,那么找出 cookie 和其他标头的哪些组合在那里有所不同。

 类似资料:
  • 关于必须从XML文件中检索和检查有效元素的Web服务,我需要一些帮助。web服务方法应该如下所示-翻译(“花”、“英语”、“俄语”),客户机应该能够允许您输入所需的单词、原始语言和目标语言。如果XML文件中存在这些内容,那么它的翻译将显示在客户端,如果不存在,它将显示一条错误消息。 我创建了一个标准的web服务方法-add(int a,int b)并使用普通java应用程序创建了客户机部分,添加了

  • 问题内容: 我已经完成了将记录插入数据库的操作,但是我不知道如何检索它。我的代码是: Account.java: MyAccount.java: insert.html: web.xml: 当用户单击“检索”按钮时,如何从数据库检索数据,并以另一HTML格式显示所有记录?请提供有关操作方法的建议。 在我的应用程序中,当用户单击检索按钮时,它正在执行插入操作。但是我想要的是,当用户单击它时,应该转到

  • 问题内容: 我知道此页面中有很多此主题,但可悲的是,我仍然无法解决我的问题。 这是我的xml代码: 这是我在Java中的代码: 是的,像往常一样,我无法获得输出,因为它仅显示: 仅当我删除ns:1时,才会显示输出,xml的代码将如下所示: 问题是,我在网上发现的所有建议似乎都没有用: 例如,我已经尝试过 等2 .. 我能得到的唯一最好的输出是,它将显示: 谁能给我正确的代码给我解决我的问题? 提前

  • 问题内容: MVC4 +实体框架4.4 + MySql + POCO /代码优先 我正在设置以上配置..这是我的课程: 这是我的web.config设置… 数据库AND表已经存在… 我对mvc还是很陌生,但是正在使用本教程 应用程序构建良好…但是,当我尝试使用Product(BTD.Data)作为我的模型类并使用BTDContext(BTD.DataContext)作为我的数据上下文类添加控制器时

  • 问题内容: 我旁边有一个文本框和一个按钮。我想通过对webmethod的Jquery ajax调用发送文本框的内容,并获取相同的大写值并将其显示在警报中。到目前为止,我有此代码,但无法正常工作。 JAVASCRIPT: HTML: 网页方法: 问题答案: 根据您的评论,我了解您的问题尚未解决,所以只需尝试一下

  • 问题内容: 我想获取数据并在没有标签的情况下进行整理。看起来像这样 并且我希望能够提取所有信息字符串,以便可以使用以下方式将其存储在纯文本文件中: 光学变焦:15倍数码变焦:6倍电池类型:碱性分辨率百万像素:14 MP 我使用Selenium在Java中进行编程,因此无法为其找到正确的XPath表达式。 有人可以找出我为什么会犯错误的原因,并可能给我一些如何正确解析此数据的指示吗?我对Seleni