当前位置: 首页 > 面试题库 >

如何使用HtmlUnit搜索YouTube

芮安顺
2023-03-14
问题内容

我想知道是否可以使用HtmlUnit搜索YouTube 。我开始写代码,这里是:

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链接。但在此之前,我需要按上传日期排序,然后获取链接。有人可以帮我排序吗?


问题答案:

我不是HtmlUnit专家,但是有一种解决方法。您可以将自己的按钮添加到表单,然后使用它来提交表单。

这是带有注释的代码示例

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());
   }
}


 类似资料:
  • 问题内容: 我正在尝试使用Java中的HtmlUnit登录网站。首先,我输入用户名,然后输入密码。之后,我需要从下拉框中选择一个选项。输入用户名和密码似乎有效,但是当我尝试从下拉框中选择项目时出现错误。谁能帮我解决这个问题?我的代码如下: 问题答案: 这是HTMLunit的单元测试中的代码。 请注意,他们使用的是getSelectsByName而不是getElementById。 这是这些单元测试

  • 问题内容: 我想从源HTML中删除这些标签及其内容。 问题答案: 当搜索你基本上使用的地方被定义这个API。但是,注释并不是技术上的元素,因此您可能会感到困惑,但它们仍然是由节点名标识的节点。 让我们看看这可能如何工作:

  • 问题内容: 我有一个关于在JSON中搜索特定信息的问题。例如,我有这个JSON文件: 我的问题是,如何通过名称查找特定的人并使用jQuery显示该人的年龄?例如,我想在JSON中搜索一个叫Peter的人,当我找到一个匹配项时,我想显示有关该匹配项的其他信息(在这种情况下,关于名为Peter的人),例如人的年龄。 问题答案: 根据此答案,您可以使用类似:

  • 是的,我对这个问题非常认真。使用pip搜索是如何工作的? 关键字

  • 问题内容: 我在Ionic App中显示了带有pdf.js的pdf文件。我不使用viewer.js和viewer.html,因为我需要完全不同的布局。现在,我有一个自定义搜索栏,我想突出显示pdf文件中的术语。我可以调用一个函数来执行此操作吗? 我正在像这样渲染文件: HTML: 问题答案: 现在我找到了解决方案! 搜索字词: 而且我必须导入viewer.js。 我在问题中发布的代码不再需要。PD

  • 我正在尝试使用HTMLUnit(第一次)从特定页面中提取数据。具体来说,我目前正在尝试按ID(搜索框)抓取超文本标记语言元素。 但我遇到了: 在使用page.asXML()进行进一步检查时,该页面似乎没有正确加载,这就是它找不到项目的原因?我不确定为什么它没有为HTMLUnit加载。无需登录,您可以通过在浏览器中输入页面来自行查看页面。 非常感谢对调试此类HTMLUnit问题的任何帮助。