Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在JAVA中使用Xpath解析HTML文件_Java_Xpath_Web Scraping_Html Content Extraction_Htmlcleaner - Fatal编程技术网

在JAVA中使用Xpath解析HTML文件

在JAVA中使用Xpath解析HTML文件,java,xpath,web-scraping,html-content-extraction,htmlcleaner,Java,Xpath,Web Scraping,Html Content Extraction,Htmlcleaner,我有一个Java代码,可以读取URL的源代码并保存到文件(source.html),现在从保存的页面中,我想使用XPath提取一些值。假设我想阅读price-//div[@itemprop='price']//text() 如何进一步做到这一点,我将能够直接在保存的HTML页面中完成,或者我应该首先将其转换为XML文件,然后使用XPath。我听说过HTML清理器/解析器,我应该在这里使用它吗?请不要指向其他网站寻求答案。如果是这样的话,请把我带到一个地方,在那里我可以直接简单地上一课。修改下面的

我有一个Java代码,可以读取URL的源代码并保存到文件(source.html),现在从保存的页面中,我想使用XPath提取一些值。假设我想阅读price-
//div[@itemprop='price']//text()

如何进一步做到这一点,我将能够直接在保存的HTML页面中完成,或者我应该首先将其转换为XML文件,然后使用XPath。我听说过HTML清理器/解析器,我应该在这里使用它吗?请不要指向其他网站寻求答案。如果是这样的话,请把我带到一个地方,在那里我可以直接简单地上一课。修改下面的代码将非常有用

import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;

import org.jsoup.Jsoup;

public class jSoupContentRead {
    @SuppressWarnings("resource")
    public static void main(String[] args) throws IOException {
        FileWriter FR = new FileWriter("source.html");
        PrintWriter op = new PrintWriter(FR);

        org.jsoup.nodes.Document doc = Jsoup.connect(
                "http://itunes.apple.com/us/book/a-way-home/id982665320?mt=11")
                .get();

        op.write(doc.toString());
        System.out.println(doc.toString());
    }
}
通常(跨语言)XPath将应用于DOM结构。在php中,有一个标准过程:

  • 获取html
  • 使其成为有效的xml(可能是可选步骤)
  • 使其成为DOMDocument对象实例
  • 使其成为一个DOMXPath对象实例
  • 将xpath查询应用于此DOMXPath实例。看一看

  • 我认为JAVA中应该有类似的东西。

    您使用的是JSoup。它的查询语言允许一些非常相似的东西,为什么要使用XPath?@realpoint-你是对的,但我更喜欢XPath,因为它对我来说非常容易使用。如果你真的“喜欢学习”,那么就按照@realpoint的建议学习JSoup,因为它是适合这项工作的工具。XPath很方便,并且有一些JSoup没有的高级功能。此外,我还可以在jsoup文档有限的net中获得很多关于xpath的帮助。有人能帮我举个例子吗。
    “Xpath…有一些jsoup没有的高级函数……”
    ——比如?