`

htmlunit实例

 
阅读更多

htmlunit 是一款开源的java 页面分析工具,读取页面后,可以有效的使用htmlunit分析页面上的内容。项目可以模拟浏览器运行,被誉为java浏览器的开源实现。这个没有界面的浏览器,运行速度也是非常迅速的。
相关文件下载地址:

http://sourceforge.net/projects/htmlunit/files/

http://jaist.dl.sourceforge.net/project/htmlunit/htmlunit/2.15/htmlunit-2.15-bin.zip

我的需求是使用百度的高级新闻搜索,抓取指定站点新闻
手动搜索的设置如图所示

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
package com.html580;
 
import java.io.IOException;
import java.net.MalformedURLException;
import java.util.List;
 
import com.gargoylesoftware.htmlunit.ElementNotFoundException;
import com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException;
import com.gargoylesoftware.htmlunit.WebClient;
import com.gargoylesoftware.htmlunit.html.HtmlForm;
import com.gargoylesoftware.htmlunit.html.HtmlHiddenInput;
import com.gargoylesoftware.htmlunit.html.HtmlPage;
import com.gargoylesoftware.htmlunit.html.HtmlRadioButtonInput;
import com.gargoylesoftware.htmlunit.html.HtmlSelect;
import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
 
/**
 * @description 抓取百度搜索结果
 * @author html580
 * @version 2014-7-23
 */
public class BaiduSpider {
 
    public static void main(String[] args) {
        try {
            final WebClient webclient = new WebClient();
            final HtmlPage htmlpage = webclient.getPage("http://www.baidu.com/gaoji/advanced.html");
 
            //搜索按钮
            final HtmlForm form = htmlpage.getFormByName("f1");
            final HtmlSubmitInput button = form.getInputByValue("百度一下");
 
            //搜索结果-关键词
            final HtmlTextInput textField = form.getInputByName("q1");
            textField.setValueAttribute("HTML我帮您");
 
            //分页条数
            final HtmlSelect htmlSelet=form.getSelectByName("rn");
            htmlSelet.setDefaultValue("10");
 
            //网页的时间
            final HtmlSelect htmlSeletlm=form.getSelectByName("rn");
            htmlSeletlm.setDefaultValue("0");
 
            //语言
            final List<HtmlRadioButtonInput> radioButtonCts = form.getRadioButtonsByName("ct");
            radioButtonCts.get(0).setChecked(true);
            radioButtonCts.get(1).setChecked(false);
            radioButtonCts.get(2).setChecked(false);
 
            //文档格式
            final HtmlSelect htmlSeletft=form.getSelectByName("ft");
            htmlSeletft.setDefaultValue("");
 
            //关键词位置
            final List<HtmlRadioButtonInput> radioButtonq5s = form.getRadioButtonsByName("q5");
            radioButtonq5s.get(0).setChecked(true);
            radioButtonq5s.get(1).setChecked(false);
            radioButtonq5s.get(2).setChecked(false);
 
            //站内搜索      限定要搜索指定的网站
            final HtmlTextInput htmlTextInputq6 = form.getInputByName("q6");
            htmlTextInputq6.setDefaultValue("html580.com");
 
            //隐藏值
            final HtmlHiddenInput hiddenInputtn = form.getInputByName("tn");
            hiddenInputtn.setDefaultValue("baiduadv");
 
            final HtmlPage page2 = button.click();
            String result = page2.asXml();
            System.out.println(result);
            webclient.closeAllWindows();
        } catch (FailingHttpStatusCodeException e) {
            e.printStackTrace();
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (ElementNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

 

转自:http://www.html580.com/11591/baiduspider

分享到:
评论

相关推荐

    htmlunit爬取网页并保存成Excel

    - 初始化HTMLUnit实例。 - 访问目标URL,获取`HtmlPage`。 - 使用DOM操作和选择器提取所需数据。 - 创建`Workbook`和`Sheet`。 - 将数据转换为适合Excel的格式,并写入到`Sheet`。 - 保存`Workbook`到Excel...

    Htmlunit2.23-bin.zip

    HTMLUnit的一个显著优点是它的速度,因为不需要启动真正的浏览器实例,所以执行速度比使用Selenium等其他工具要快得多。然而,由于它是一种无头浏览器模拟,对于某些复杂的页面交互或特定的JavaScript库支持可能会...

    java采集工具(源码)

    1. **配置和初始化HTMLUnit**:在代码中,你需要首先配置HTMLUnit实例,设置浏览器的一些属性,如用户代理、JavaScript支持等。然后,创建一个新的WebClient对象,这是与服务器通信的主要接口。 2. **打开网页**:...

    htmlUnit所需jar包

    1. 创建`HtmlUnitWebClient`实例。 2. 使用`WebClient`打开指定URL的网页。 3. 通过DOM操作(如`getByXPath`, `getElementById`, `getElementsByClassName`等)查找页面元素。 4. 对元素进行操作,如输入文本、点击...

    htmlunit 及其 依赖包

    在使用HTMLUnit时,开发者通常会创建一个`WebClient`实例,设置必要的配置,然后使用它来打开URL获取`HtmlPage`对象。`HtmlPage`提供了访问网页元素的方法,如链接、表单、脚本等。如果网页上有JavaScript,HTMLUnit...

    htmlunit-2.36和htmlunit-2.50,包括关联文件

    在实际使用HTMLUnit时,你可以创建一个`WebClient`实例,设置浏览器特性,然后访问URL来加载网页。HTMLUnit提供了一系列API,如`HtmlPage`,可以用来解析和操作网页元素,执行JavaScript,以及模拟用户行为,如点击...

    htmlunit-2.1.5源码

    - **WebClient**:这是HTMLUnit的主要入口点,用于初始化和配置浏览器实例,创建HTTP请求,并处理响应。 - **HtmlPage**:表示一个HTML页面,包含了对DOM的操作方法,如getElementById、getElementsByTag等。 - **...

    htmlunit-2.20.zip

    2. 创建HtmlUnitDriver实例: ```java HtmlUnitDriver driver = new HtmlUnitDriver(); ``` 3. 使用driver访问网页: ```java driver.get("http://www.example.com"); ``` 4. 操作网页元素: ```java ...

    Htmlunit2.8开发文档

    以下是一个简单的示例,展示了如何创建WebClient实例并加载HtmlUnit官方网站的首页: ```java @Test public void homePage() throws Exception { final WebClient webClient = new WebClient(); final ...

    通过htmlunit获取执行js代码后的html文档

    通过HTMLUnit,开发者可以编写程序来模拟用户在浏览器上的操作,如点击链接、填写表单、执行JavaScript等,而无需真正打开一个浏览器实例。 使用HTMLUnit获取执行JavaScript后的HTML文档,首先需要理解HTMLUnit的...

    com.gargoylesoftware.htmlunit-2.29所需包

    2. **初始化WebClient**:创建`WebClient`实例,并根据需求设置各种配置,如浏览器版本、JavaScript支持、代理设置等。 3. **导航和交互**:使用`WebClient`的`go()`方法导航到URL,然后使用`getPage()`或其他方法...

    htmlunit用到的jar包

    然后,你可以创建`WebClient`实例,设置所需的浏览器特性,如JavaScript支持,接着使用`WebClient`的`go`或`getPage`方法加载URL。一旦页面加载完成,你可以通过`HtmlPage`对象访问网页元素,并调用各种方法来模拟...

    HtmlUnit-2.5(jar  doc)

    开发人员可以将这个JAR添加到项目的类路径中,以便在代码中调用HtmlUnit的功能,例如创建WebClient实例,访问网页,填表单,点击按钮,以及执行其他与浏览器交互的操作。 API文档,通常以DOC格式提供,是开发者理解...

    htmlunit-2.18-src源码

    这对于自动化测试和大数据抓取场景非常有用,因为它可以快速地、非可视性地处理大量网页,而无需打开多个浏览器实例。 在源码中,你可以看到HTMLUnit是如何模拟浏览器的各个组件,如HTML解析器、CSS解析器、...

    htmlunit源码

    开发者可以通过创建`WebClient`实例,设置各种配置(如连接超时、代理设置等),然后使用它来访问和操作网页。 6. **网页对象模型**:HTMLUnit将网页元素封装为Java对象,如`HtmlPage`代表整个HTML页面,`...

    htmlunit-2.29.zip

    在使用HTMLUnit时,开发者通常会创建一个测试类,实例化一个`HtmlPage`对象,然后通过这个对象与网页进行交互。例如,可以使用`clickLink()`方法来模拟点击链接,`getElementById()`或`getElementsByClassName()`来...

    htmlunit-2.41.0-bin 官方包

    在实际项目中,开发者需要将这些文件引入到项目路径中,然后通过Java代码创建`HtmlUnitDriver`实例,设置网页编码,加载URL,执行网页操作,获取页面内容,最后进行断言或数据提取等操作。通过这种方式,HTMLUnit能...

    htmlunit包

    2. **创建WebClient**:使用`new WebClient()`初始化一个Web客户端实例,可以设置浏览器配置,如是否启用JavaScript。 3. **导航到URL**:通过`webClient.getPage(url)`方法访问网页。 4. **处理页面内容**:可以...

    HtmlUnit官网下载

    在上述代码中,`WebClient`实例化了一个模拟浏览器,`getPage()`方法加载了指定URL的网页,`asText()`则用于获取页面的纯文本内容。 总的来说,HtmlUnit 2.30为开发者提供了一种高效、灵活的工具,用以处理Web测试...

Global site tag (gtag.js) - Google Analytics