jsoup爬取动态页面图片
时间: 2023-09-14 18:04:27 浏览: 202
如果页面使用 JavaScript 动态加载图片,那么使用 Jsoup 无法直接获取到这些图片的 URL,需要使用其他技术来模拟浏览器行为,比如使用 Selenium WebDriver。
以下是使用 Selenium WebDriver 和 Jsoup 爬取动态页面图片的示例代码:
```java
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import java.util.List;
public class Main {
public static void main(String[] args) {
// 设置 Selenium WebDriver 的路径
System.setProperty("webdriver.chrome.driver", "/path/to/chromedriver");
// 创建 ChromeDriver 实例
WebDriver driver = new ChromeDriver();
// 打开目标页面
driver.get("https://example.com");
// 等待页面加载完成
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
// 使用 Jsoup 解析 HTML
Document doc = Jsoup.parse(driver.getPageSource());
// 获取图片元素
Elements imgElements = doc.select("img");
// 遍历图片元素
for (int i = 0; i < imgElements.size(); i++) {
// 获取图片 URL
String imgUrl = imgElements.get(i).attr("src");
// 下载图片
// ...
}
// 关闭 ChromeDriver
driver.quit();
}
}
```
这段代码首先创建了一个 Selenium WebDriver 实例,打开了目标页面,并等待页面加载完成。然后,使用 Jsoup 解析 HTML,获取所有的图片元素,遍历图片元素并获取图片 URL,最后可以使用 Java 的网络编程 API 或第三方库(如 Apache HttpClient)下载图片。最后,关闭 ChromeDriver。需要注意的是,在实际应用中,需要根据实际情况设置适当的等待时间,以防止页面未完全加载完成导致获取不到图片元素。
阅读全文