当前位置:   article > 正文

java采用selenium02_java爬取猫眼电影

java爬取猫眼电影

目录

1. 下载驱动包(要和谷歌大版本一致)

2. 创建项目并导入依赖

3. 爬取猫眼电影网站资源


1. 下载驱动包(要和谷歌大版本一致)

  •  http://chromedriver.storage.googleapis.com/index.html 

2. 创建项目并导入依赖

  1. <dependency>
  2. <groupId>org.seleniumhq.selenium</groupId>
  3. <artifactId>selenium-java</artifactId>
  4. <version>3.141.59</version>
  5. </dependency>

3. 爬取猫眼电影网站资源

  • 可在下方案例中修改自己想要爬取的资源数据 
  1. package com.jmh.utils;
  2. import org.openqa.selenium.By;
  3. import org.openqa.selenium.JavascriptExecutor;
  4. import org.openqa.selenium.WebDriver;
  5. import org.openqa.selenium.WebElement;
  6. import org.openqa.selenium.chrome.ChromeDriver;
  7. import java.io.*;
  8. import java.net.MalformedURLException;
  9. import java.net.URL;
  10. import java.util.ArrayList;
  11. import java.util.List;
  12. import java.util.UUID;
  13. /**
  14. * 爬取猫眼毛榜单的所有图片并下载到电脑本地
  15. */
  16. public class Demo03 {
  17. //定义一个driver
  18. private static WebDriver driver;
  19. //定义一个集合来保存图片
  20. private static List<String> urlImg = new ArrayList<>();
  21. //定义静态代码块
  22. static {
  23. //设置驱动
  24. System.setProperty("webdriver.chrome.driver","D:\\webDriver\\chromedriver_win32\\chromedriver.exe");
  25. //创建驱动
  26. driver=new ChromeDriver();
  27. }
  28. //定义一个爬取猫眼榜单图片的方法
  29. public static void getUrlImg() throws Exception{
  30. //定义要爬取的网站
  31. driver.get("https://www.maoyan.com/");
  32. //设置休眠时间
  33. Thread.sleep(1000l);
  34. //定位到榜单
  35. WebElement element = driver.findElement(By.xpath("/html/body/div[1]/div/div[2]/div[5]/a"));
  36. //点击榜单
  37. element.click();
  38. //设置休眠时间
  39. Thread.sleep(1000l);
  40. //执行js,滚动条下拉到最底
  41. ((JavascriptExecutor) driver).executeScript("window.scrollTo(0,document.body.scrollHeight)");
  42. //设置休眠时间
  43. Thread.sleep(5000l);
  44. //定位每个榜单的作品
  45. //*[@id="app"]/div/div/div/dl/dd[1]
  46. List<WebElement> elements = driver.findElements(By.xpath("//*[@id=\"app\"]/div/div/div/dl/dd"));
  47. //遍历每一个作品
  48. for (WebElement el : elements) {
  49. /*System.out.println(el.getText());*/
  50. WebElement el1 = el.findElement(By.className("name"));
  51. WebElement el2 = el.findElement(By.className("star"));
  52. WebElement el3 = el.findElement(By.className("releasetime"));
  53. //获取图片
  54. WebElement element1 = el.findElement(By.cssSelector("img.board-img"));
  55. String src = element1.getAttribute("src");
  56. System.out.println(el1.getText());
  57. System.out.println(el2.getText());
  58. System.out.println(el3.getText());
  59. System.out.println(src);
  60. //将图片添加到集合里面
  61. urlImg.add(src);
  62. }
  63. }
  64. //定义一个将集合里面的图片路径写入到本地电脑里面的方法
  65. public static void setUrlImg(){
  66. try {
  67. //定义网络字节流的通道
  68. URL url=null;
  69. //定义图片保存到本地路径
  70. String path="D:\\img\\";
  71. //遍历集合
  72. for (String s : urlImg) {
  73. /*Thread.sleep(1000l);*/
  74. System.out.println("集合里面的值"+s);
  75. url=new URL(s);
  76. //创建输入流
  77. InputStream is=new DataInputStream(url.openStream());
  78. String fileName=path+ UUID.randomUUID().toString().replace("-","")+".jpg";
  79. //创建输出流
  80. OutputStream out=new FileOutputStream(new File(fileName));
  81. byte[] bytes=new byte[1024];
  82. int len=0;
  83. while((len=is.read(bytes))!=-1){
  84. out.write(bytes,0,len);
  85. }
  86. is.close();
  87. out.close();
  88. }
  89. }catch (Exception e){
  90. }
  91. }
  92. public static void main(String[] args) throws Exception{
  93. //调用获取图片的方法
  94. getUrlImg();
  95. //调用将图片保存到电脑本地的方法
  96. setUrlImg();
  97. }
  98. }
  • 控制台打印 

  • 下载成功 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/372007?site
推荐阅读
相关标签
  

闽ICP备14008679号