Java学习笔记:爬虫-操作动态网页的Selenium

这篇具有很好参考价值的文章主要介绍了Java学习笔记:爬虫-操作动态网页的Selenium。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Why Selenium?

有些网页内容是在浏览器端动态生成的,直接Http获取网页源码是得不到那些元素的。

Selenium可以自动启动一个浏览器、打开网页,可以用程序操作页面元素,也可以获得浏览器当前页面动态加载的页面元素。

比如:百度图片的图片是动态加载的。

用法:

1、下载安装Chrome浏览器。

2、下载Chrome对应版本的Selenium  chromeDriver

java selenium实现网页操作,java,学习,爬虫,selenium

镜像文件 

Index of chromedriver-local

查找版本相似的下载

java selenium实现网页操作,java,学习,爬虫,selenium

我是Windows系统,就下Windows版本

下载好,把文件放在你Chrome浏览器的同一级文件夹下 

3、将chromeDriver 放在chrome浏览器根目录下,它负责对Chrome浏览器执行自动化操作

java selenium实现网页操作,java,学习,爬虫,selenium

4、程序通过Maven安装包:selenium-java,它和chromeDriver通讯。

java selenium实现网页操作,java,学习,爬虫,selenium

java selenium实现网页操作,java,学习,爬虫,selenium

下载百度图片的图片

java selenium实现网页操作,java,学习,爬虫,selenium

自动的将网页打开

java selenium实现网页操作,java,学习,爬虫,selenium

百度图片的图片是动态加载的。

System.setProperty("webdriver.chrome.driver", chromedriver的路径);

ChromeDriver driver = new ChromeDriver();

String url=百度图片网址;

driver.get(url);

List<WebElement> imgs = driver.findElement(By.className("imglist")).findElements(By.tagName("img"));

for(int i=0;i<imgs.size();i++)

{

  WebElement img = imgs.get(i);

  String imgSrc = img.getAttribute("data-imgurl");

  byte[] bytes = new HttpSender().sendGetBytes(imgSrc);//yzk18-net

  ImageType imgType = ImageHelpers.detectImageType(bytes);//yzk18-commons

  IOHelpers.writeAllBytes("e:/temp/"+i+"."+imgType,bytes);

}

driver.close();

driver.quit();

More

java selenium实现网页操作,java,学习,爬虫,selenium

package Part6;

import com.yzk18.commons.IOHelpers;
import com.yzk18.net.HttpSender;
import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;

import java.util.List;

public class SeleniumTest1 {
    public static void main(String[] args) throws InterruptedException {
        System.setProperty("webdriver.chrome.driver","C:\\Users\\PC\\Desktop\\Google\\Chrome\\Application/chromedriver.exe");
        ChromeDriver driver=new ChromeDriver();
        /*
        driver.get("https://image.baidu.com/");
        WebElement kw =driver.findElement(By.id("kw"));//findElement如果有多个,就返回第一个,如果都没有就抛异常
        kw.sendKeys("白姨");
        WebElement s_newBtn=driver.findElement(By.className("s_newBtn"));
        s_newBtn.click();
        */
        driver.get("https://image.baidu.com/search/index?tn=baiduimage&ipn=r&ct=201326592&cl=2&lm=-1&st=-1&fm=result&fr=&sf=1&fmq=1658837529512_R&pv=&ic=0&nc=1&z=&hd=&latest=&copyright=&se=1&showtab=0&fb=0&width=&height=&face=0&istype=2&dyTabStr=&ie=utf-8&sid=&word=%E5%8E%9F%E7%A5%9E%E7%99%BD%E5%A7%A8");
        List<WebElement> imgs =driver.findElements(By.className("imgitem"));
        int i=1;//文件名计数
        for (WebElement img:imgs){
            String imgUrl=img.getAttribute("data-thumburl");
            System.out.println(imgUrl);
            String imgText=img.findElement(By.className("imgitem-title")).getText();
            imgText=imgText.replace("*","").replace("?","").replace("|","").replace("/","").replace("\\","");
//            保存图片
            byte[] bytes=new HttpSender().sendGetBytes(imgUrl);
            IOHelpers.writeAllBytes("D:\\temp\\爬虫\\图片/1/"+imgText+i+".jpeg",bytes);
            i++;
        }
        Thread.sleep(5000);
        driver.close();
        driver.quit();
    }
}

 java selenium实现网页操作,java,学习,爬虫,selenium

为什么只爬了几张,这个涉及到了计算机的虚拟模式概念。 

获取更多图片?

页面滚动,但是有虚模式的问题需要处理。还有反反爬、代理、验证码…………。爬虫入门容易,如果精通则需要是优秀的网站开发者(前端+后端)。文章来源地址https://www.toymoban.com/news/detail-645245.html

到了这里,关于Java学习笔记:爬虫-操作动态网页的Selenium的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 2023爬虫学习笔记 -- selenium反爬虫操作(window.navigator.webdriver属性值)

    一、无可视化浏览器操作 1、导入需要的函数,固定写法,并设置相关浏览器参数 2、请求的时候加上参数设置 3、通过截图证明确实被打开了 二、有些网站通过判断window.navigator.webdriver属性值来判断是否有爬虫行为 1、正常访问浏览器,该属性值为false 2、通过webdriver访问浏览

    2024年02月08日
    浏览(40)
  • 如何使用 Python 爬虫抓取动态网页数据

    随着 Web 技术的不断发展,越来越多的网站采用了动态网页技术,这使得传统的静态网页爬虫变得无能为力。本文将介绍如何使用 Python 爬虫抓取动态网页数据,包括分析动态网页、模拟用户行为、使用 Selenium 等技术。 在进行动态网页爬取之前,我们需要先了解动态网页和静

    2023年04月24日
    浏览(74)
  • Python爬虫基础(三):使用Selenium动态加载网页

    Python爬虫基础(一):urllib库的使用详解 Python爬虫基础(二):使用xpath与jsonpath解析爬取的数据 Python爬虫基础(三):使用Selenium动态加载网页 Python爬虫基础(四):使用更方便的requests库 Python爬虫基础(五):使用scrapy框架 (1)Selenium是一个用于Web应用程序测试的工具。

    2024年02月06日
    浏览(59)
  • Scrapy爬虫框架集成Selenium来解析动态网页

    当前网站普遍采用了javascript 动态页面,特别是vue与react的普及,使用scrapy框架定位动态网页元素十分困难,而selenium是最流行的浏览器自动化工具,可以模拟浏览器来操作网页,解析元素,执行动作,可以处理动态网页,使用selenium处理1个大型网站,速度很慢,而且非常耗资

    2024年02月15日
    浏览(53)
  • python爬虫实战 scrapy+selenium爬取动态网页

    最近学习了scrapy爬虫框架,想要找个目标练练手。由于现在很多网页都是动态的,因此还需要配合selenium爬取。本文旨在记录这次学习经历,如有疑问或不当之处,可以在评论区指出,一起学习。 对scrapy不了解的同学可以阅读这篇文章 爬虫框架 Scrapy 详解,对scrapy框架介绍的

    2024年02月07日
    浏览(83)
  • 小白用chatgpt编写python 爬虫程序代码 抓取网页数据(js动态生成网页元素)

    jS动态生成,由于呈现在网页上的内容是由JS生成而来,我们能够在浏览器上看得到,但是在HTML源码中却发现不了        如果不加,如果网站有防爬技术,比如频繁访问,后面你会发现什么数据都取不到 User-Agent获取地方:  网页获取位置: 使用代理IP解决反爬。(免费代理

    2024年02月01日
    浏览(92)
  • 【一个超简单的爬虫demo】探索新浪网:使用 Python 爬虫获取动态网页数据

    可以实战教爬虫吗,搭个环境尝试爬进去。尝试收集一些数据 一位粉丝想了解爬虫,我们今天从最基础的开始吧! 本文将介绍如何使用 Python 爬虫技术爬取新浪网首页的内容。新浪网作为一个内容丰富且更新频繁的新闻网站,是理解动态网页爬取的绝佳例子。 首先,确保你

    2024年02月04日
    浏览(56)
  • Python网络爬虫逆向分析爬取动态网页、使用Selenium库爬取动态网页、​编辑将数据存储入MongoDB数据库

    目录 逆向分析爬取动态网页 了解静态网页和动态网页区别 1.判断静态网页  2.判断动态网页  逆向分析爬取动态网页 使用Selenium库爬取动态网页 安装Selenium库以及下载浏览器补丁 页面等待  页面操作 1.填充表单 2.执行JavaScript 元素选取 Selenium库的find_element的语法使用格式如下

    2024年02月15日
    浏览(119)
  • 【Java学习笔记】 动态代理

    1、什么是动态代理? 前面已经提到了,动态代理就是【在内存】中动态生成【字节码代理类】的技术。(虽然不需要开发者书写,但是在内存层面依然存在该代理对象】 优点 : 减少了代理类的数量 并且解决了代码复用的问题。 动态代理常见的实现技术包括以下三种 JDK内

    2024年02月04日
    浏览(38)
  • 爬虫:使用Selenium模拟人工操作及获取网页内容

    结合自身经验和内部资料总结的Python教程,每天3-5章,最短1个月就能全方位的完成Python的学习并进行实战开发,学完了定能成为大佬!加油吧!卷起来! 全部文章请访问专栏:《Python全栈教程(0基础)》 再推荐一下最近热更的:《大厂测试高频面试题详解》 该专栏对近年

    2024年02月13日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包