【问题标题】:Java HTML parsing (links)Java HTML 解析(链接)
【发布时间】:2016-05-08 04:59:38
【问题描述】:

我正在尝试解析一个网站并从中获取一些内容,但我现在完全迷失了,我正在尝试从<div class="block block--archive"> 获取所有链接@ 987654324@ 我想获取这些链接,我已经搜索了很多关于它的指南,但找不到任何具体的答案。我尝试了一些东西,但我知道它以非常愚蠢的方式并且不起作用:

public static void main(String[]args) throws IOException {
      Document doc = Jsoup.connect("http://curatorsofsweden.com/archive/").get();
      Elements articles = doc.select("body");
       Elements element2= articles.select("div");
        Elements element3 = element2.select("article");
        Elements element4 = element3.select("div");
        System.out.println(element4.toString());
        }

这是我想从中获取链接的网站结构:

【问题讨论】:

    标签: java html web jsoup


    【解决方案1】:

    这不起作用,因为该网站使用 javascript 来加载您想要的内容。 Jsoup 不能执行 javascript,它只是一个 HTML 解析器。为了验证这一点,您可以从 JSOUP 获取 HTML 并将其保存为文件:

    Document doc = Jsoup.connect("http://curatorsofsweden.com/archive/").get();
    Files.write(Paths.get("./website.html"), doc.html().getBytes());
    

    您要查找的内容不存在。

    你可以试试Selenium Webdriver。该库使用真正的浏览器并将执行 javascript。此示例打印您正在寻找的链接:

    WebDriver driver = new FirefoxDriver();
    driver.get("http://curatorsofsweden.com/archive/");
    
    By linkSelector = By.cssSelector("div[class='block block--archive'] a");
    
    WebDriverWait wait = new WebDriverWait(driver, 2);
    wait.until(ExpectedConditions.presenceOfElementLocated(linkSelector));
    
    List<WebElement> linkElements = driver.findElements(linkSelector);
    for (WebElement linkElement : linkElements) {
        String link = linkElement.getAttribute("href");
        System.out.println("LINK " + link);
    }
    driver.quit();
    

    【讨论】:

    • 我正在尝试,5分钟内回复,谢谢:)
    • 因为这条线给了我无法解决的方法://wait.until(ExpectedConditions.presenceOfElementLocated(linkSelector));
    • 不客气。这是一个完整的导入要点:gist.github.com/squallified/bbd39ee12c10b592c840
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-28
    • 2013-07-22
    • 2010-09-12
    • 2011-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多