为什么“http://www.stackoverflow.com”没有被解析,但“http://www.javatpoint.com/java-tutorial”正在被解析

时间:2016-03-06 12:23:26

标签: java html-parsing jsoup

我正在尝试学习jsoup的基本方法。我试图获取所有的超链接 一个特定的网页。但我使用stackoverflow链接然后,我无法获得该页面上的所有超链接,但另一方面,当我将其更改为 javatpoint它正在发挥作用。

有人可以解释为什么?

这是代码。

import java.io.IOException;

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

import java.io.*;

import org.jsoup.nodes.Document;

class Repo {
    // String html;
    public static void main(String s[]) throws IOException {
        try {
            Document doc = Jsoup.connect("http://www.javatpoint.com/java-tutorial").get();
            // Document doc=Jsoup.connect("http://www.stackoverflow.com").get();

            System.out.println("doc");
            // Elements link=(Elements)doc.select("span[class]");
            // Elements link = doc.select("span").first();
            // Elements link = (Elements)doc.select("span");
            Elements link = (Elements) doc.select("a[href]");

            for (Element el : link) {
                // System.out.print("-");
                // System.out.println(el.attr("class"));
                String str = el.attr("href");
                System.out.println(str);

            }
        } catch (Exception e) {
        }
    }
}

1 个答案:

答案 0 :(得分:2)

许多网站要求有效的http请求来携带某些标头。一个突出的例子是userAgent标头。例如,这将适用于此:

Document doc = Jsoup
    .connect("http://www.stackoverflow.com")
    .userAgent("Mozilla/5.0")
    .get();

旁注: 你应该从不尝试捕获异常,然后默默地忽略可能的失败案例。至少在那里做一些日志 - 否则你的程序将很难调试。