您的位置:首页 > 编程语言 > Java开发

[Java爬虫] 使用 HtmlUnit + Xpath 模拟点击、动态获取信息

2018-03-24 23:47 1466 查看

一、前言



实现动态操作页面,首先我们进入360搜索的页面(百度页面、搜狗页面也行),输入要查询的关键词,这时候页面就会发生变化,我们要获取新的页面的信息。

此时的爬虫就不再是之前的一个页面的信息了:

[Java爬虫] 使用 Xpath + HtmlUnit 爬取网页基本信息

二、代码

package com.cun.test;

import java.util.List;

import com.gargoylesoftware.htmlunit.WebClient;
import com.gargoylesoftware.htmlunit.html.HtmlElement;
import com.gargoylesoftware.htmlunit.html.HtmlInput;
import com.gargoylesoftware.htmlunit.html.HtmlPage;

/**
* 模拟点击,动态获取页面信息
* @author linhongcun
*
*/
public class JsoupHttpClient {
public static void main(String[] args) throws Exception {
// 创建webclient
WebClient webClient = new WebClient();
// 取消 JS 支持
webClient.getOptions().setJavaScriptEnabled(false);
// 取消 CSS 支持
webClient.getOptions().setCssEnabled(false);
// 获取指定网页实体
HtmlPage page = (HtmlPage) webClient.getPage("https://www.so.com/");
// 获取搜索输入框
HtmlInput input = (HtmlInput) page.getHtmlElementById("input");
// 往输入框 “填值”
input.setValueAttribute("larger5");
// 获取搜索按钮
HtmlInput btn = (HtmlInput) page.getHtmlElementById("search-button");

4000
// “点击” 搜索
HtmlPage page2 = btn.click();
// 选择元素
List<HtmlElement> spanList=page2.getByXPath("//h3[@class='res-title']/a");
for(int i=0;i<spanList.size();i++) {
// 输出新页面的文本
System.out.println(i+1+"、"+spanList.get(i).asText());
}
}

}


三、效果



四、源码与原网页

1、搜索页

①界面



②源码



2、搜索结果页

①界面



②源码

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: