Java学习笔记:爬虫-Selenium高级操作

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

Selenium VS Jsoup

Jsoup

优点:程序的可控性强,不依赖于外部环境,容错性比较强,并发处理更灵活,适合于服务器端开发;

缺点:对于复杂页面(ajax、表单数据校验、登录)处理比较麻烦,对于反爬的网站需要做报文头等的设置工作。

Selenium

优点:简单;

缺点:依赖于外部环境,容错性较差,并发处理比较差,尽量不要再服务器端开发环境中使用;

实现查询单词的几种方式

1、最佳方案:ECDict等非爬虫方案。

2、假如必须用有道词典,怎么做。

3、假如必须用youzack.com,并且用Jsoup。F12查看Json请求。缺点。

4、假如必须用youzack.com,并且用Selenium。Selenium更多操作1

1、模拟按键:

element.sendKeys("你好");

element.sendKeys(Keys.ENTER);

浏览一下WebElement的相关方法,看它能干啥。

2、等待满足条件的元素出现:

WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(3));

wait.until(ExpectedConditions.visibilityOfElementLocated(By.id(“id1")));

如果到期之后找不到,会抛出TimeoutException,需要根据情况进行处理。

浏览一下ExpectedConditions的其他方法。

Selenium更多操作2

尝试查找,找不到就返回null。

findElement如果找不到则会抛异常。

static WebElement tryFindElement(ChromeDriver driver,By by)

{

  var elements = driver.findElements(by);

  if(elements.size()<=0)

  {

  return null;

  }

  else

  {

  return elements.get(0);

  }

}

Selenium查询youzack.com单词

driver.get("https://bdc2.youzack.com/Recitation/Home");

for(String word : words)

{

  WebElement searchInput = driver.findElement(By.id("searchInput"));

  searchInput.clear();

  searchInput.sendKeys(word);

  searchInput.sendKeys(Keys.ENTER);

  WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(3));

  wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("js_half_screen_dialog")));

  WebElement dialog = driver.findElement(By.id("js_half_screen_dialog"));

  String text = dialog.findElement(By.className("weui-half-screen-dialog__bd")).getText();

  System.out.println(text);

  System.out.println("-----------------");

  dialog.findElement(By.id("dialogClose")).click();

  wait.until(ExpectedConditions.invisibilityOfElementLocated(By.id("js_half_screen_dialog")));

}

//求放过

More

1、图形验证码。OCR与打码平台(调用到打码平台人工识别)。

2、行为验证码。突破与打码平台。

3、登录……

4、headless

5、师傅引进门……

6、爬虫更需要具体问题具体分析,别人帮不了你太多。

7、能用正规的接口就不要用爬虫,不仅是技术难度问题,而且有可能有法律问题。

Java学习笔记:爬虫-Selenium高级操作

模拟打开网页

https://bdc2.youzack.com/Recitation/Home

然后输入driver

模拟回车

Java学习笔记:爬虫-Selenium高级操作

Java学习笔记:爬虫-Selenium高级操作 这样是拿不出来的,我们要等待服务器返回信息,然后在爬取

 Java学习笔记:爬虫-Selenium高级操作文章来源地址https://www.toymoban.com/news/detail-458797.html

package Part6;

import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;

import java.time.Duration;
import java.util.List;

public class ChanDanCi {
    public static void main(String[] args) {
        System.setProperty("webdriver.chrome.driver","C:\\Users\\PC\\Desktop\\Google\\Chrome\\Application/chromedriver.exe");
        ChromeDriver driver=new ChromeDriver();
        String s="driver";
        driver.get("https://bdc2.youzack.com/Recitation/Home");
        WebElement searchInput = driver.findElement(By.id("searchInput"));
        searchInput.sendKeys(s);
        searchInput.sendKeys(Keys.ENTER);//回车
        WebDriverWait driverWait=new WebDriverWait(driver, Duration.ofSeconds(2));
        driverWait.until(ExpectedConditions.visibilityOfElementLocated(By.className("weui-half-screen-dialog__bd")));//元素可见的时候在往下走
        WebElement dialog= driver.findElement(By.className("weui-half-screen-dialog__bd"));
        String txt=dialog.getText();
        System.out.println(txt);
        WebElement webElement=tryFindElement(driver,By.id("id1"));
        System.out.println(webElement);
    }
    static WebElement tryFindElement(ChromeDriver driver,By by){
        List<WebElement> elements=driver.findElements(by);
        if (elements.size()>=1){
            return elements.get(0);
        }
        else {
            return null;
        }
    }
}

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

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

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

相关文章

  • 【Java-Crawler】HttpClient+Jsoup实现简单爬虫

    网络爬虫(WEB crawler),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。 导入依赖(下面列的程序用的是这个依赖,是版本5,我是从Maven中直接copy最新版的,没想那么多,但4点多的用的人多点,而且网上资料也多点,所以还是推荐大家用4点多的吧,但是下

    2024年02月05日
    浏览(40)
  • java爬虫(jsoup)如何设置HTTP代理ip爬数据

    目录 前言 什么是HTTP代理IP 使用Jsoup设置HTTP代理IP的步骤 1. 导入Jsoup依赖 2. 创建HttpProxy类 3. 设置代理服务器 4. 使用Jsoup进行爬取 结论 在Java中使用Jsoup进行网络爬虫操作时,有时需要使用HTTP代理IP来爬取数据。本文将介绍如何使用Jsoup设置HTTP代理IP进行爬取,并提供相关代码

    2024年01月21日
    浏览(55)
  • 探索 Java 网络爬虫:Jsoup、HtmlUnit 与 WebMagic 的比较分析

    在当今信息爆炸的时代,网络数据的获取和处理变得至关重要。对于 Java 开发者而言,掌握高效的网页抓取技术是提升数据处理能力的关键。本文将深入探讨三款广受欢迎的 Java 网页抓取工具:Jsoup、HtmlUnit 和 WebMagic,分析它们的功能特点、优势以及适用场景,以助开发者选

    2024年04月29日
    浏览(35)
  • JAVA使用selenium的常见爬虫操作

    这里我的springboot的版本为2.2.0.RELEASE(这里使用springboot开发的,不是的话用main方法跑也一样的,springboot的话只是为了方便后期存数据到数据库) chrome浏览器的下载地址:https://chromedriver.storage.googleapis.com/index.html Edge的驱动下载地址为:https://developer.microsoft.com/en-us/microsoft-e

    2024年02月08日
    浏览(41)
  • Selenium用法详解【cookies操作】【JAVA爬虫】

    本文主要讲解 java 代码利用 Selenium 控制浏览器获取网站的 cookies ,对网站 cookies 的相关操作教程。 cookies 是识别用户登录与否的关键,爬虫中常常使用 selenium + jsoup 实现 cookie 持久化,即先用 selenium 模拟登陆获取 cookie ,再通过 jsoup 携带 cookie 进行请求。 webdriver 提供 cookies 的

    2023年04月18日
    浏览(40)
  • Python爬虫学习笔记(七)————Selenium

    目录 1.什么是selenium? 2.为什么使用selenium? 3.selenium安装 4.selenium的使用步骤 5.selenium的元素定位 6.访问元素信息 7.交互 1.什么是selenium? (1)Selenium是一个用于Web应用程序测试的工具。 (2)Selenium 测试直接运行在浏览器中,就像真正的用户在操作一样。 (3)支持通过各种

    2024年02月16日
    浏览(35)
  • 【学习笔记】爬虫(Ⅰ)—— Selenium和Pytest

            爬虫(Web Scraper)是指一类软件程序或脚本,其基本原理是模拟人类用户在网页上的浏览行为,通过发送 HTTP 请求来 获取 网页内容,并 解析 网页内容、 提取 所需的信息。         爬虫通常用于从网站上抓取数据,它们 批量化 地、 自动 地、浏览互联网并收

    2024年04月16日
    浏览(47)
  • Java网络爬虫——jsoup快速上手,爬取京东数据。同时解决‘京东安全’防爬问题

    网络爬虫,就是在 浏览器上,代替人类爬取数据 ,Java网络爬虫就是通过Java编写爬虫代码,代替人类从网络上爬取信息数据。程序员通过设定既定的规则,让程序代替我们从网络上获取海量我们需要的数据,比如图片,企业信息等。 爬虫的关键是对于网页信息的解析。 什么

    2024年02月10日
    浏览(43)
  • 爬虫012_字典高级操作_查询_修改_添加_删除和清空_遍历---python工作笔记031

    然后来看字典高级,首先 打印某个元素     然后打印的时候注意,如果直接打印的值,在字典中没有就报错     这里要注意不能用点访问  

    2024年02月13日
    浏览(36)
  • 自动化测试:Selenium高级操作!,看完阿里P9大牛的“软件测试成长笔记”我悟了

    分享他们的经验,还会分享很多直播讲座和技术沙龙 可以免费学习!划重点!开源的!!! qq群号:110685036 Switch_to切换frame 如果元素在html的frame或iframe中,则无法直接定位到元素。需要先切换到该frame中,再进行定位及其他操作。 相关方法: driver.switch_to.frame(frame_reference)

    2024年04月25日
    浏览(63)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包