java 使用webDriver+selenium 抓取LOL英雄图片

爬虫是一门有趣的技术,它可以让我们感受到程序的魅力,给我们带来视觉冲击感和成就感,可以极大地提高我们对编程的学习兴趣。

    愿你我,都能: 遵循君子协议 合理使用技术 提高学习兴趣

    为什么每次被抓的都有你~

我们应该自觉遵守君子协议(爬虫协议的俗称),掌握爬虫的技术。

在对应网址之后增加 /robots.txt, 即可查看爬虫协议,知道哪些页面是不可爬取的,爬虫协议具体内容可自行百度了解。

例如: https://www.baidu.com/robots.txt

好,接下来进入主题:

1 先确定好模拟那个浏览器,需要下载对应浏览器的驱动。这里提供谷歌驱动。

http://chromedriver.storage.googleapis.com/index.html  打开此网址下载与谷歌浏览器版本基本一致的驱动。

2 模拟浏览器打开网页不难,抓取的难点在于拿到图片链接后怎样转化成图片并保存到本地。

3 学会了这一个简单的例子,然后我们想要抓取那个网站的图片就可以模拟写了。

然后就是编码了:直接贴代码

import java.io.File;

import java.io.FileOutputStream;

import java.io.InputStream;

import java.io.OutputStream;

import java.net.URL;

import java.net.URLConnection;

import java.util.List;

import org.openqa.selenium.By;

import org.openqa.selenium.WebDriver;

import org.openqa.selenium.WebElement;

import org.openqa.selenium.chrome.ChromeDriver;

public class seleniumTest3 {

    static String baseUrl = "https://lol.qq.com/data/info-heros.shtml";

    public static void main(String args[]) throws Exception

    {

    //创建文件夹

    File file = new File("e://img");

    if(!file.exists()) {

    file.mkdir();

    }

        //创建一个webdriver

        System.setProperty("webdriver.chrome.driver","G:\\ceshi\\chromedriver_win32\\chromedriver.exe");

        WebDriver driver = new ChromeDriver();

        driver.get(baseUrl);

        //获得所有a标签

        List<WebElement> aList = driver.findElements(By.tagName("img"));

        System.out.println(aList.size());

        for (WebElement webElement : aList) {

        if(webElement.getAttribute("src")!=null) {

String urlStr = webElement.getAttribute("src");

String name = webElement.getAttribute("alt");

System.out.println(webElement+"  "+urlStr+"  "+name);

    // 新的图片文件名 = 编号 +"."图片扩展名

      String newFileName = name+ ".png";

      OutputStream os = new FileOutputStream(file.getPath()+"\\"+newFileName); 

    // 构造URL 

        URL url = new URL(urlStr); 

        // 打开连接 

        URLConnection con = url.openConnection(); 

    // 输入流 

        InputStream is = con.getInputStream(); 

    // 读取到的数据长度 

        int len; 

        byte[] bs = new byte[1024];

        while ((len = is.read(bs)) != -1) { 

          os.write(bs, 0, len); 

        }

        // 完毕,关闭所有链接 

        os.close(); 

        is.close(); 

        }

        }

    }

}

成果:

在爬虫的路上越走越好哈,有用的话支持下感谢


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容