1. 程式人生 > >[Java爬蟲] 使用 HtmlUnit + Xpath 模擬點選、動態獲取資訊

[Java爬蟲] 使用 HtmlUnit + Xpath 模擬點選、動態獲取資訊

一、前言

這裡寫圖片描述
實現動態操作頁面,首先我們進入360搜尋的頁面(百度頁面、搜狗頁面也行),輸入要查詢的關鍵詞,這時候頁面就會發生變化,我們要獲取新的頁面的資訊。

二、程式碼

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"); // “點選” 搜尋 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、搜尋結果頁

①介面

這裡寫圖片描述

②原始碼

這裡寫圖片描述