如何使用 HtmlUnit 搜索 YouTube

2024-01-07

我想知道 YouTube 是否可以搜索HtmlUnit http://htmlunit.sourceforge.net/。我开始写代码,如下:

import java.io.IOException;
import java.net.MalformedURLException;
import com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException;
import com.gargoylesoftware.htmlunit.WebClient;
import com.gargoylesoftware.htmlunit.html.HtmlForm;
import com.gargoylesoftware.htmlunit.html.HtmlPage;
import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;

public class HtmlUnitExampleTestBase {
    private static final String YOUTUBE = "http://www.youtube.com";
    public static void main(String[] args) throws FailingHttpStatusCodeException, MalformedURLException, IOException {
        WebClient webClient = new WebClient();
        webClient.setThrowExceptionOnScriptError(false);

        //This is equivalent to typing youtube.com to the adress bar of browser
        HtmlPage currentPage = webClient.getPage("http://www.youtube.com");

        //Get form where submit button is located
        HtmlForm searchForm = (HtmlForm) currentPage.getElementById("masthead-search");
        //Printing result form
        System.out.println(searchForm.asText());
        final List<HtmlAnchor> listLinks = (List<HtmlAnchor>) newPage.getByXPath("//a[@class='ux-thumb-wrap result-item-thumb']");
        for (int i=0; i<listLinks.size(); i++){
            System.out.println(YOUTUBE + listLinks.get(i).getAttribute("href"));
        }
    }   
}

现在我不知道如何在搜索字段中输入一些文本并按搜索按钮。

我看到了有关 HtmlUnit 的教程,但我遇到了问题,因为它们使用了名为:getElementByName但 YouTube 上的搜索按钮没有名称,只有 ID。有人可以帮助我吗?

编辑:我编辑了上面的代码,现在我从第一页获取 YouTube 链接。但在此之前,我需要按上传日期排序,然后获取链接。有人可以帮我排序吗?


I'm no HtmlUnit http://htmlunit.sourceforge.net/专家,但有一个解决方法。您可以将自己的按钮添加到表单并使用它来提交表单。

这是带有注释的代码示例:

import java.io.IOException;
import java.net.MalformedURLException;

import com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException;
import com.gargoylesoftware.htmlunit.WebClient;
import com.gargoylesoftware.htmlunit.html.HtmlButton;
import com.gargoylesoftware.htmlunit.html.HtmlForm;
import com.gargoylesoftware.htmlunit.html.HtmlPage;
import com.gargoylesoftware.htmlunit.html.HtmlTextInput;

public class HtmlUnitExampleTestBase {
   public static void main(String[] args) throws FailingHttpStatusCodeException, MalformedURLException, IOException {
      WebClient webClient = new WebClient();
      webClient.setThrowExceptionOnScriptError(false);

      // This is equivalent to typing youtube.com to the adress bar of browser
      HtmlPage currentPage = webClient.getPage("http://www.youtube.com");

      // Get form where submit button is located
      HtmlForm searchForm = (HtmlForm) currentPage.getElementById("masthead-search");

      // Get the input field.
      HtmlTextInput searchInput = (HtmlTextInput) currentPage.getElementById("masthead-search-term");
      // Insert the search term.
      searchInput.setText("Nyan Cat");

      // Workaround: create a 'fake' button and add it to the form.
      HtmlButton submitButton = (HtmlButton) currentPage.createElement("button");
      submitButton.setAttribute("type", "submit");
      searchForm.appendChild(submitButton);

      // Workaround: use the reference to the button to submit the form. 
      HtmlPage newPage = submitButton.click();

      System.out.println(newPage.asText());
   }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 HtmlUnit 搜索 YouTube 的相关文章

  • 菜单未显示在应用程序中

    由于某种原因 我的操作菜单在我的 Android Studio 应用程序中消失了 我正在按照教程学习如何创建 Android 应用程序 但最终遇到了这个问题 我正在使用 atm 的教程 http www raywenderlich com
  • 如何使用 FileChannel 将一个文件的内容附加到另一个文件的末尾?

    File a txt好像 ABC File d txt好像 DEF 我正在尝试将 DEF 附加到 ABC 所以a txt好像 ABC DEF 我尝试过的方法总是完全覆盖第一个条目 所以我总是最终得到 DEF 这是我尝试过的两种方法 File
  • 如何将 Java 赋值表达式转换为 Kotlin

    java中的一些东西就像 int a 1 b 2 c 1 if a b c System out print true 现在它应该转换为 kotlin 就像 var a Int 1 var b Int 2 var c Int 1 if a
  • AES 加密 Java/plsql

    我需要在Java和plsql DBMS CRYPTO for Oracle 10g 上实现相同的加密 解密应用程序 两种实现都工作正常 但这里的问题是我对相同纯文本的加密得到了不同的输出 下面是用于加密 解密过程的代码 Java 和 PLS
  • 线程自动利用多个CPU核心?

    假设我的应用程序运行 2 个线程 例如渲染线程和游戏更新线程 如果它在具有多核 CPU 当今典型 的移动设备上运行 我是否可以期望线程在可能的情况下自动分配给不同的核心 我知道底层操作系统内核 Android linux内核 决定调度 我的
  • 如何查找 Android 设备中的所有文件并将它们放入列表中?

    我正在寻求帮助来列出 Android 外部存储设备中的所有文件 我想查找所有文件夹 包括主文件夹的子文件夹 有办法吗 我已经做了一个基本的工作 但我仍然没有得到想要的结果 这不起作用 这是我的代码 File files array file
  • java中删除字符串中的特殊字符?

    如何删除字符串中除 之外的特殊字符 现在我用 replaceAll w s 它删除了所有特殊字符 但我想保留 谁能告诉我我该怎么办 Use replaceAll w s 我所做的是将下划线和连字符添加到正则表达式中 我添加了一个 连字符之前
  • 如何为 Gson 编写自定义 JSON 反序列化器?

    我有一个 Java 类 用户 public class User int id String name Timestamp updateDate 我收到一个包含来自 Web 服务的用户对象的 JSON 列表 id 1 name Jonas
  • 请求位置更新参数

    这就是 requestLocationUpdates 的样子 我使用它的方式 requestLocationUpdates String provider long minTime float minDistance LocationLis
  • 序列化对象以进行单元测试

    假设在单元测试中我需要一个对象 其中所有 50 个字段都设置了一些值 我不想手动设置所有这些字段 因为这需要时间而且很烦人 不知何故 我需要获得一个实例 其中所有字段都由一些非空值初始化 我有一个想法 如果我要调试一些代码 在某个时候我会得
  • 在具有相同属性名称的不同数据类型上使用 ModelMapper

    我有两节课说Animal AnimalDto我想用ModelMapper将 Entity 转换为 DTO 反之亦然 但是对于具有相似名称的一些属性 这些类应该具有不同的数据类型 我该如何实现这一目标 动物 java public class
  • Java中接口作为方法参数

    前几天去面试 被问到了这样的问题 问 反转链表 给出以下代码 public class ReverseList interface NodeList int getItem NodeList nextNode void reverse No
  • 检查 Android 手机上的方向

    如何查看Android手机是横屏还是竖屏 当前配置用于确定要检索的资源 可从资源中获取Configuration object getResources getConfiguration orientation 您可以通过查看其值来检查方向
  • Spring Data 与 Spring Data JPA 与 JdbcTemplate

    我有信心Spring Data and Spring Data JPA指的是相同的 但后来我在 youtube 上观看了一个关于他正在使用JdbcTemplate在那篇教程中 所以我在那里感到困惑 我想澄清一下两者之间有什么区别Spring
  • 归并排序中的递归:两次递归调用

    private void mergesort int low int high line 1 if low lt high line 2 int middle low high 2 line 3 mergesort low middle l
  • Java直接内存:在自定义类中使用sun.misc.Cleaner

    在 Java 中 NIO 直接缓冲区分配的内存通过以下方式释放 sun misc Cleaner实例 一些比对象终结更有效的特殊幻像引用 这种清洁器机制是否仅针对直接缓冲区子类硬编码在 JVM 中 或者是否也可以在自定义组件中使用清洁器 例
  • Springs 元素“beans”不能具有字符 [children],因为该类型的内容类型是仅元素

    我在 stackoverflow 中搜索了一些页面来解决这个问题 确实遵循了一些正确的答案 但不起作用 我是春天的新人 对不起 这是我的调度程序 servlet
  • java迭代器内部是如何工作的? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有一个员工列表 List
  • KeyPressed 和 KeyTyped 混淆[重复]

    这个问题在这里已经有答案了 我搜索过之间的区别KeyPressedand KeyTyped事件 但我仍然不清楚 我发现的一件事是 Keypressed 比 KeyTyped 首先被触发 请澄清一下这些事件何时被准确触发 哪个适合用于哪个目的
  • Swagger/Openapi-Annotations:如何使用 $ref 生成 allOf?

    我正在生成 Rest 端点 包括添加OpenAPI Swagger对生成的代码进行注释 虽然它对于基本类型运行得很好 但我在自定义类方面遇到了一些问题 现在我有很多自定义类的重复架构条目 使用 Schema 实现 MyClass class

随机推荐

  • 如何在 iOS Swift 中将数据数组回调到另一个 viewController

    在createCardVC中 我使用carbonKit库来显示标签栏 最初 使用静态数据加载的数据数组 但现在我尝试使用来自 webView javascript postMessage 的数据数组 当 createCardVC 加载时 第
  • C++11 递归可变参数模板

    我想了解递归可变参数模板是如何工作的 include
  • Java 中的“快速”整数幂

    简短回答 糟糕的基准测试方法 你可能认为我现在已经明白了 该问题被表述为 找到一种快速计算x y的方法 其中x和y是正整数 典型的 快速 算法如下所示 public long fastPower int x int y Replaced m
  • 并发修改异常[重复]

    这个问题在这里已经有答案了 我有一小段代码 它给了我并发修改异常 我无法理解为什么我不断收到它 即使我没有看到任何并发修改正在进行 import java util public class SomeClass public static
  • SQL Server 和 Firebase/PouchDB 同步

    我正在构建一个 Web 应用程序 客户端需要在离线状态下通过浏览器访问数据存储 我正在考虑使用 Firebase 或 PouchDB 数据库在应用程序内实现此目的 但是 对于后端 我使用 SQL Server 我可以将 Firebase P
  • HTML 或 CSS 中的“父级”是什么?

    我被介绍到以下代码 div Here is span a span element span which is blue as span elements are set to be div div class extra style co
  • 如何在打字稿中将 array.map 与元组一起使用?

    每当我使用array map对于元组 Typescript 将其推断为通用数组 例如 以下是简单 3x3 数独游戏的一些片段 const a Blank type Blank typeof type Cell number Blank ty
  • 当扩展复杂类型时混合继承吗?

    我的架构中有以下内容
  • 迭代日期范围(scala 方式)

    给定开始日期和结束日期 我想使用 foreach map 或类似函数按天迭代它 就像是 DateTime now to DateTime now 5 day by 1 day foreach println 我在用https github
  • 放置新的零会占用内存吗?

    我有以下代码 struct foo void bar foo d new d foo d 是否表达new d foo d 留下指向的对象d不变 更具体地说 如果类foo并且其中递归包含的所有对象都只有简单的复制构造函数 那么new d fo
  • SQL 条件求和

    我目前有一个大型 SQL 语句 我将以下行添加到其中 以便获取每个交易 ID 的总现金 这是唯一的 select sum cash from Table a where a branch p branch and a transID p t
  • 视频流和 Android

    今天 对于我的一个应用程序 Android 2 1 我想从 URL 流式传输视频 就我探索的 Android SDK 而言 它非常好 我很喜欢almost它的每一个部分 但现在谈到视频流 我有点迷失了 如果您需要有关 Android SDK
  • Java 将 JFrame 附加到正在运行的应用程序窗口?

    如何将右上角的 JFrame 连接到另一个应用程序打开的窗口并在调整大小时保持不变 是否可以 这是我想要完成的任务的图表 谢谢您的帮助 如果这不可能 有其他选择吗 获取窗口大小 位置并相应设置我自己的 jframe 的方法 您要求 Java
  • 在具有不同 x-y 轴的面中绘制多个矩阵

    我从一组在线论坛收集了数据 并想使用 ggplot 和facets 每个论坛一个facet 绘制代表用户 A 回复用户 B 次数的矩阵 这是加载玩具示例的代码 library ggplot2 library dplyr df edges l
  • 互斥量在繁忙时被破坏

    EventHandler类有一个单例对象来接收来自主线程的事件 它将输入注册到向量 并创建一个运行 lambda 函数的线程 该函数在从向量中删除输入之前等待一段时间 以防止在一段时间内重复执行该输入的事件 但我在繁忙错误时遇到互斥体被破坏
  • 使用 MATLAB 进行数字图像处理,使用 3 种技术

    我有 MATLAB 作业 我必须使用 3 种图像处理技术 所以我应该制定一个任务 然后使用 3 种技术来解决它 例如 阈值处理 分割 形态学 恢复 直方图均衡 噪声消除 我需要一些想法以及如何解决它 你能帮助我吗 谢谢 版本中 我在某本书中
  • wsdl 中的“any”是什么以及如何使用 php 调用 wsdl 函数?

    这段代码是我的 wsdl 的一小部分 这里我没看懂
  • Pandas - 计算和旋转以获得前两年的收入

    我有一个如下所示的数据框 df pd DataFrame stud id 101 101 101 101 101 102 102 102 sub code CSE01 CSE01 CSE01 CSE01 CSE02 CSE02 CSE02
  • Ansible 剧本,在提升模式下使用特定(域)用户运行 powershell 脚本的正确语法是什么?

    在离线环境中运行 Ansible 2 4 2 使用 kerberos 进行身份验证 通过 ansible playbook 在提升模式下使用特定 域 用户 DOMAIN someuser 运行 powershell 脚本的正确语法是什么 我
  • 如何使用 HtmlUnit 搜索 YouTube

    我想知道 YouTube 是否可以搜索HtmlUnit http htmlunit sourceforge net 我开始写代码 如下 import java io IOException import java net Malformed