希望能够使用Java自动浏览和搜索互联网没有图形

时间:2015-04-17 18:18:52

标签: java browser urlconnection

我很难弄清楚如何使用Java在互联网上自动执行任务。问题在于,当我搜索这个时,我通常最终找到了诸如Selenium等API之类的链接。但我想浏览没有任何图形的网站,而不记录我正在做的事情(我想在代码中完成所有操作)。对于那些过去在场的人来说,我希望自动化网页浏览非常类似于使用Lynx浏览互联网。

例如,假设我去了Google,我希望能够以某种方式返回搜索栏,然后将文本设置为特定的内容。然后,我想要获取搜索按钮并将其状态更改为按下。然后我希望能够完成结果。

所以这里有一些虚拟代码解释了我希望能做什么:

 ExampleClass eClass = new ExampleClass("www.google.com");
 //The search button is the 5th component
 InternetButton button = (InternetButton)eClass.getComponent(5); 
 //Text Field is 2nd component
 InternetTextField textField  = (InternetTextField)eClass.getComponent(2); 
 textField.setText("stack overflow");
 button.setPressed(true);

这会在Google上搜索堆栈溢出,然后我会查看结果。

我一直在搜索和搜索,但找不到任何东西。我正在寻找更多关于我想要做的教程或示例。如果假设Java SDK可能包含我需要执行此操作的所有内容,但我似乎无法找到有关该主题的任何帮助。我可能只是在寻找错误的关键词。

如果有人可以提供任何建议,我们将不胜感激。如果我只是在寻找错误的东西,而且你是一个比我更好的Google员工,请发布它。

我已经尝试了一些HttpURLConnection,HttpsURLConnection,URLConnection等,但是如果没有示例或教程,从头开始编写它是非常复杂的。我可以抓住这些文件,但不能通过网站进行操作。

2 个答案:

答案 0 :(得分:4)

我会选择HtmlUnit

  

HtmlUnit是“用于Java程序的GUI-Less浏览器”。它模拟HTML文档,并提供一个API,允许您调用页面,填写表单,单击链接等...就像在“普通”浏览器中一样。

example taken from their page接近你想做的事情

@Test
public void submittingForm() throws Exception {
    final WebClient webClient = new WebClient();

    // Get the first page
    final HtmlPage page1 = webClient.getPage("http://some_url");

    // Get the form that we are dealing with and within that form, 
    // find the submit button and the field that we want to change.
    final HtmlForm form = page1.getFormByName("myform");

    final HtmlSubmitInput button = form.getInputByName("submitbutton");
    final HtmlTextInput textField = form.getInputByName("userid");

    // Change the value of the text field
    textField.setValueAttribute("root");

    // Now submit the form by clicking the button and get back the second page.
    final HtmlPage page2 = button.click();

    webClient.closeAllWindows();
}

答案 1 :(得分:2)

我还没试过,但你可以查看jsoup

  

jsoup是一个用于处理真实HTML的Java库。它提供了一个非常方便的API,用于提取和操作数据,使用最好的DOM,CSS和类似jquery的方法。