Java HTML 正在解析(链接)
Java HTML parsing (links)
我正在尝试解析一个网站并从中获取一些内容,但我现在完全迷路了,我正在尝试从 <div class="block block--archive">
获取所有链接 <a class="block_link" hrek = "/curator/christoffer-rostlund-jonsson/"
我想要获得这些链接,我已经搜索了很多关于它的一些指南,但找不到任何具体的答案。我已经尝试过一些东西,但我知道它的方式非常愚蠢并且不起作用:
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());
}
这是我想从中获取链接的网站结构:
这行不通,因为该网站使用 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();
我正在尝试解析一个网站并从中获取一些内容,但我现在完全迷路了,我正在尝试从 <div class="block block--archive">
获取所有链接 <a class="block_link" hrek = "/curator/christoffer-rostlund-jonsson/"
我想要获得这些链接,我已经搜索了很多关于它的一些指南,但找不到任何具体的答案。我已经尝试过一些东西,但我知道它的方式非常愚蠢并且不起作用:
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());
}
这是我想从中获取链接的网站结构:
这行不通,因为该网站使用 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();