日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

HtmlUnit解析动态网页并采集网页列表到Excel

發布時間:2025/4/16 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 HtmlUnit解析动态网页并采集网页列表到Excel 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

HtmlUnit可以解析動態網頁,本文這里選取了一個網址(頁面需js/ajax動態加載),模擬瀏覽器操作頁面各元素,包括點擊獲取列表值,主要是掌握了HtmlUnit解析頁面元素的主要用法,同時使用POI HSSF將頁面解析出來的ul/li標簽內容導入到excel表。

本文代碼只用來作為HtmlUnit頁面解析的參考,因為具體頁面有具體信息需要處理。其中對頁面如果有級聯元素,可以參考,如先選地市再選區域。

package com;import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.util.ArrayList; import java.util.Iterator;import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFRichTextString; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.poifs.filesystem.POIFSFileSystem;import com.gargoylesoftware.htmlunit.BrowserVersion; import com.gargoylesoftware.htmlunit.WebClient; import com.gargoylesoftware.htmlunit.html.DomElement; import com.gargoylesoftware.htmlunit.html.DomNodeList; import com.gargoylesoftware.htmlunit.html.HtmlDivision; import com.gargoylesoftware.htmlunit.html.HtmlElement; import com.gargoylesoftware.htmlunit.html.HtmlPage; import com.gargoylesoftware.htmlunit.html.HtmlTextInput;public class CMHtml {public static ArrayList<String> gAddList=new ArrayList<String>();public static String gQueryURL = "http://xxx";public void spider(String strCity,String strArea,String strAddr){ try { //創建一個webclientWebClient webClient = new WebClient(BrowserVersion.CHROME); // 啟動JSwebClient.getOptions().setJavaScriptEnabled(true); //忽略ssl認證webClient.getOptions().setUseInsecureSSL(true);//禁用Css,可避免自動二次請求CSS進行渲染webClient.getOptions().setCssEnabled(false);//運行錯誤時,不拋出異常//webClient.getOptions().setThrowExceptionOnScriptError(false);// 設置Ajax異步//webClient.setAjaxController(new NicelyResynchronizingAjaxController());//獲取頁面HtmlPage page = webClient.getPage(gQueryURL); webClient.waitForBackgroundJavaScript(10000);//webClient.waitForBackgroundJavaScriptStartingBefore(10000);//判斷圖形驗證碼是否彈出,獲取i標簽節點列表DomNodeList<DomElement> nodelist=page.getElementsByTagName("i");int iCode=0;for(int i=0;i<nodelist.getLength();i++){DomElement domElement = (DomElement)nodelist.get(i);String txt=domElement.asXml();if(txt.indexOf("c_vcode")!=-1){//找出id為c_vcode的i標簽iCode=i;break;} }DomElement domElement = (DomElement)nodelist.get(iCode);if(domElement.asXml().indexOf("display: none;")!=-1){//沒彈出//獲取返回頁面的地址列表div/ul/li標簽HtmlDivision divKD=(HtmlDivision)page.getElementById("kd_content"); DomNodeList<HtmlElement> nodeKD=divKD.getElementsByTagName("li");for(int m=0;m<nodeKD.size();m++){HtmlElement heLi=nodeKD.get(m);if(heLi.asText().equals(strCity)){//定位到城市page=(HtmlPage)heLi.click();HtmlDivision divKD1=(HtmlDivision)page.getElementById("kd_content"); DomNodeList<HtmlElement> nodeKD1=divKD1.getElementsByTagName("li");for(int n=0;n<nodeKD1.size();n++){HtmlElement heLi1=nodeKD1.get(n);if(heLi1.asText().equals(strArea)){//定位到區域page=(HtmlPage)heLi1.click();break;}}break;}}//輸入具體地址HtmlTextInput kw =(HtmlTextInput)page.getElementByName("kw");kw.setValueAttribute(strAddr); //獲取a標簽,提交查詢HtmlElement heAnchor =page.getHtmlElementById("srhBtn");HtmlPage retPage = (HtmlPage) heAnchor.click();// 等待JS驅動dom完成獲得還原后的網頁webClient.waitForBackgroundJavaScript(10000);//獲取返回頁面的地址列表div/ul/li標簽HtmlDivision div=(HtmlDivision)retPage.getElementById("query_result"); DomNodeList<HtmlElement> addNode=div.getElementsByTagName("li");for (int i=0;i<addNode.getLength();i++){HtmlElement heLi=addNode.get(i);gAddList.add(heLi.asText());} webClient.close(); return;}else{//彈出,重新啟動爬蟲,避免圖形驗證碼識別webClient.close();//關閉瀏覽器spider(strCity,strArea,strAddr);return;} }catch (Exception e) {System.err.println( "Exception: " + e ); }}public void query(String path){try {//獲取excel文件POIFSFileSystem fs=new POIFSFileSystem(new FileInputStream(path));//得到Excel工作簿對象 HSSFWorkbook wb = new HSSFWorkbook(fs); //得到Excel工作表對象 HSSFSheet sheet = wb.getSheetAt(0);//取得有效的行數int rowcount = sheet.getLastRowNum(); //得到Excel工作表的行 for (int i=1;i<=rowcount;i++){ //去掉第一行表頭HSSFRow row = sheet.getRow(i); //得到Excel工作表指定行的單元格 HSSFCell cellCity = row.getCell(0);//獲取地市String strCity=cellCity.getStringCellValue();HSSFCell cellArea = row.getCell(1);//獲取區域String strArea=cellArea.getStringCellValue(); HSSFCell cellAddr = row.getCell(2);//獲取地址String strAddr=cellAddr.getStringCellValue(); //爬蟲,返回列表結果spider(strCity,strArea,strAddr);//返回的地址寫入excel表for(int j=0;j<gAddList.size();j++){HSSFCell cellRes = row.createCell(j+2+1);cellRes.setCellValue(new HSSFRichTextString(gAddList.get(j)));}gAddList.clear();/*Iterator<String> it = gAddList.iterator();while(it.hasNext()){it.remove();}*/FileOutputStream out=new FileOutputStream(path);out.flush();wb.write(out);out.close();} wb.close(); fs.close();} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();} }public static void main(String[] args) {CMHtml lession = new CMHtml();String path=System.getProperty("user.dir")+System.getProperty("file.separator")+"cmbb.xls";//增加文件分隔符,通用windows和linux系統lession.query(path);} }

總結

以上是生活随笔為你收集整理的HtmlUnit解析动态网页并采集网页列表到Excel的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 九九久久视频 | 成人网免费 | 国产福利免费视频 | 国色天香网站 | 日韩精品字幕 | 天天玩天天干 | 天天干夜夜草 | 日本一级大片 | xxxx久久 | 亚洲精品国产精品国自产网站 | 五月天色站 | 性开放耄耋老妇hd | 欧美另类色 | 免费av网址在线 | 女人被狂躁60分钟视频 | 男人你懂的网站 | 中日韩在线 | 国产欧美日韩综合精品一区二区 | 又黄又爽的视频 | 成人精品福利视频 | 国产综合内射日韩久 | jizz视频在线观看 | 中文字幕人妻伦伦 | 亚洲aaaa级特黄毛片 | 欧美性色a| 中文字幕爱爱 | 在线不卡欧美 | 在线观看国产麻豆 | jizz欧洲 | 日韩成人av在线 | 欧美成人播放 | www.国产精品视频 | 射美女| av永久免费网站 | eeuss鲁丝片一区二区三区 | 伊人干综合 | 在线天堂中文 | 精品国产一区一区二区三亚瑟 | 国产精品无码专区av免费播放 | 91免费视频网 | 手机在线观看av片 | 在线播放成人 | 天天操狠狠干 | 黄色免费av| 色婷婷av一区二区三区大白胸 | 在线观看第一页 | 中国毛片在线 | 奇米影视奇米色 | 免费看的黄色网 | 人妻无码一区二区三区 | 日朝毛片 | 99re这里只有精品首页 | 成人在线亚洲 | 三年在线观看视频 | 欧美一级黄色大片 | 99久久久久久久久 | 大学生av| 一道本视频在线 | 国产网站在线看 | 99久久99久久精品免费看蜜桃 | 91av毛片 | 国产精品美女主播 | 色婷婷av一区二区三区在线观看 | 色成人免费网站 | 亚洲 国产 欧美 日韩 | 国产免费91视频 | 日韩久久不卡 | 欧美黄片一区 | 日本成人午夜 | 毛毛毛片| 日韩不卡| 色999日韩 | 精品国产乱码久久久久久影片 | 桃色一区二区三区 | 精品视频一区二区三区四区五区 | 国产精品一区二区黑人巨大 | 久久综合久久鬼色 | 香蕉视频2020 | 日本高清视频免费观看 | 国产一区二区免费 | 456av| 五月婷婷在线视频 | 成年人视频在线看 | 国产农村妇女毛片精品久久 | 欧美在线一区二区三区四区 | 欧美黄色小说 | 国产精品免费久久久 | 伊人中文在线 | 亚洲影视中文字幕 | 俄罗斯一级片 | 美色视频 | 琪琪午夜伦理 | 中文一区视频 | 色在线免费观看 | 91成人综合 | 天堂网www.| 国产精选一区 | 日本免费网站 | 国产精品国产三级国产三级人妇 |