日韩性视频-久久久蜜桃-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的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 久草中文网 | 看全黄大色黄大片 | 舌奴调教日记 | 国产精品一页 | 不卡成人 | 性免费网站| 国产内射合集颜射 | 欧美在线网站 | 嫩草嫩草嫩草嫩草嫩草嫩草 | 涩涩在线观看 | 国产一级二级 | 久久综合一区二区三区 | av影片在线播放 | 欧美一区二区视频在线观看 | 免费久久一级欧美特大黄 | 操夜夜操 | 欧美亚洲视频一区 | 国产人人爽 | 成人羞羞国产免费 | 亚洲激情自拍偷拍 | 四虎精品在线 | 国产极品一区二区 | 国产午夜电影在线观看 | 性欧美成人播放77777 | 欧美a在线 | 亚洲AV综合色区国产精品天天 | 灌篮高手全国大赛电影 | 国产精品探花一区二区三区 | 久久国产乱子伦免费精品 | www.在线观看麻豆 | 天天摸夜夜操 | 成人性生交免费看 | 日本二区视频 | 国产91大片 | 国产精品一区二区三区在线播放 | 驯服少爷漫画免费观看下拉式漫画 | 97免费人妻无码视频 | 日日插夜夜爽 | 综合在线播放 | 香蕉网址 | 欧美日本一区 | 可以直接观看的av | 日本一区二区免费在线 | 亚洲少妇18p | 综合国产精品 | 97日韩精品 | 日本大尺度做爰呻吟 | 在线免费看黄色片 | 69av片| 成人av动漫在线观看 | 秋霞一区 | 91大神小宝寻花在线观看 | 国产欧美在线观看视频 | 丰满人妻综合一区二区三区 | 国产福利资源 | 久久久久久久久久久久久久久久久久久 | 色永久 | av在线播放观看 | 中文字幕国产亚洲 | 亚洲专区一区二区三区 | 国产高清黄色 | 日韩一级在线观看视频 | 色久在线 | 九热精品视频 | 日本成人在线视频网站 | 老女人做爰全过程免费的视频 | 国产999 | 黄色福利站 | a级免费视频 | 91老司机在线 | 麻豆av免费 | 天堂а√在线最新版中文在线 | 久久久久国产一区二区 | a级无遮挡超级高清-在线观看 | 日本大片黄 | 亚洲国产精品999 | 亚洲二区精品 | 免费观看在线视频 | 在线你懂的视频 | 精品成人av一区二区在线播放 | 男人插入女人阴道视频 | 国产高清成人久久 | 大乳护士喂奶hd | 欧美精品国产一区 | 嫩草影院一区二区三区 | 99这里有精品| 夜夜夜影院 | 天天草比 | 日韩簧片在线观看 | 天堂av资源在线观看 | 自拍偷拍福利视频 | 看一级大片 | 日韩a级片在线观看 | 综合色在线视频 | 日韩在线高清视频 | 精品无码m3u8在线观看 | 在线看片你懂的 | 在线视频你懂得 | 麻豆av免费看 |