如何“扫描”一个网站(或页面)的信息,并将其带入我的程序?

好吧,我非常想弄清楚如何从网页中提取信息,并将其带入我的程序(使用Java)。

例如,如果我知道我想要的信息的确切网页,为了简化百思买商品页面,我将如何从该网页获取我需要的相应信息? 像标题,价格,描述一样?

这个过程甚至会被称为什么? 我不知道甚至开始研究这个。

编辑:好的,我正在对JSoup(BalusC发布的那个)进行测试,但我一直得到这个错误:

Exception in thread "main" java.lang.NoSuchMethodError: java.util.LinkedList.peekFirst()Ljava/lang/Object;
at org.jsoup.parser.TokenQueue.consumeWord(TokenQueue.java:209)
at org.jsoup.parser.Parser.parseStartTag(Parser.java:117)
at org.jsoup.parser.Parser.parse(Parser.java:76)
at org.jsoup.parser.Parser.parse(Parser.java:51)
at org.jsoup.Jsoup.parse(Jsoup.java:28)
at org.jsoup.Jsoup.parse(Jsoup.java:56)
at test.main(test.java:12)

我有Apache Commons


使用像Jsoup这样的HTML解析器。 由于它支持像CSS选择器这样的jQuery,因此我的选择高于Java中可用的其他HTML解析器。 此外,它的类表示一个节点列表Elements ,它实现了Iterable因此您可以在增强的for循环中迭代它(所以不需要在平均Java DOM解析器中使用冗长的NodeNodeList类)。

以下是一个基本的开局示例(只需将最新的Jsoup JAR文件放在classpath中):

package com.stackoverflow.q2835505;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

public class Test {

    public static void main(String[] args) throws Exception {
        String url = "https://stackoverflow.com/questions/2835505";
        Document document = Jsoup.connect(url).get();

        String question = document.select("#question .post-text").text();
        System.out.println("Question: " + question);

        Elements answerers = document.select("#answers .user-details a");
        for (Element answerer : answerers) {
            System.out.println("Answerer: " + answerer.text());
        }
    }

}

正如您可能已经猜到的那样,这会打印出您自己的问题以及所有答复者的姓名。


这被称为屏幕抓取,维基百科在更具体的网页抓取上有这篇文章。 这可能是一个重大挑战,因为那里有一些丑陋的,混乱的,如果不是为了浏览器的聪明HTML,所以祝你好运。


这个过程通常被称为“刮擦”。 您可以使用像TagSoup这样的解析器在您提取页面后处理该页面。

链接地址: http://www.djcxy.com/p/22043.html

上一篇: How to "scan" a website (or page) for info, and bring it into my program?

下一篇: What are the pros and cons of the leading Java HTML parsers?