集搜客网页抓取软件(图片爬虫滚动网页的处理方法有哪些?-八维教育 )
优采云 发布时间: 2022-04-03 09:11集搜客网页抓取软件(图片爬虫滚动网页的处理方法有哪些?-八维教育
)
在做图片爬虫的时候,经常会遇到一些网站,需要鼠标滚动网页才能继续响应。这对于传统的HttpClient来说是一件非常困难的事情,至少我不知道如何处理。幸运的是,我找到了 Selenium。
硒
Selenium 是一组软件工具,每个工具都有不同的方法来支持测试自动化。大多数使用 Selenium 的 QA 工程师只关注一两个最能满足其项目需求的工具。但是,学习所有工具将为您提供更多选项来解决不同类型的测试自动化问题。这套完整的工具具有丰富的测试功能,非常适合测试各类网站应用的需求。这些操作非常灵活,在将预期测试结果与实际行为进行比较时,有多种选项可用于定位 UI 元素。Selenium 最关键的特性之一是支持在多个浏览器平台上进行测试。
在 build.gradle 中添加依赖:
<p>compile 'org.seleniumhq.selenium:selenium-java:3.7.1'
</p>
除了需要添加selenium依赖外,还需要添加webdirver。
这里我用的是chromedirver(也可以选择firefoxdriver,看个人喜好),chromedirver可以下载最新版本。对于不同的操作系统,您需要下载相应的版本。
PicCrawler
PicCrawler 是我开发的用于抓取图片的爬虫。支持User-Agent、referer、header、cookies等一些简单的自定义,有兴趣的同学可以看我之前写的基于RxJava2的简单图片爬虫文章
对于Java项目,如果使用gradle构建,由于默认不使用jcenter,需要在对应模块的build.gradle中配置
<p>repositories {
mavenCentral()
jcenter()
}
</p>
然后添加最新的 piccrawler 依赖项
<p>compile 'com.cv4j.piccrawler:crawler:0.5.1'
</p>
具体实现 1. 配置chromedriver的路径
<p> static {
System.setProperty("webdriver.chrome.driver", "crawler-selenium/chromedriver");
}
</p>
2.从网页下载图片
<p> public void downloadPic(String url) {
WebDriver driver = new ChromeDriver();
driver.get(url);
String html = driver.getPageSource();
List urls = parseHtmlToImages(html,picParser);
crawlerClient.downloadPics(urls);
}
</p>
这里通过WebDriver请求一个网页,然后解析请求的html字符串,得到一组图片,最后交给图片爬虫下载图片。
3.多次滚动网页,下载网页上的图片
<p> /**
*
* @param url
* @param scrollDownNum 模拟鼠标滚动到屏幕底部到次数
*/
public void downloadPic(String url,int scrollDownNum) {
WebDriver driver = new ChromeDriver();
driver.get(url);
String html = driver.getPageSource();
List urls = parseHtmlToImages(html,picParser);
crawlerClient.downloadPics(urls);
if (scrollDownNum>1) {
<p> for (int i=0;i