1、功能:从网页上采集信息加工,如将商品名字重组(Name2FiveWords函数),并写入excel表,涉及对htmlunit元素定位以及点击重定向。

2、参考代码如下:

package com;import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileOutputStream;import org.apache.poi.hssf.usermodel.HSSFCell;
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.NicelyResynchronizingAjaxController;
import com.gargoylesoftware.htmlunit.ProxyConfig;
import com.gargoylesoftware.htmlunit.WebClient;
import com.gargoylesoftware.htmlunit.html.DomElement;
import com.gargoylesoftware.htmlunit.html.DomNodeList;
import com.gargoylesoftware.htmlunit.html.HtmlElement;
import com.gargoylesoftware.htmlunit.html.HtmlPage;public class EBayHU {public static void main(String[] args) {String path="D:"+System.getProperty("file.separator")+"tmp"+System.getProperty("file.separator")+"test.xls";try {   //webclient设置开始WebClient webClient = new WebClient(BrowserVersion.CHROME); //创建一个webclient                      webClient.getOptions().setJavaScriptEnabled(true); // 启动JS          webClient.getOptions().setUseInsecureSSL(true);//忽略ssl认证            webClient.getOptions().setCssEnabled(false);//禁用Css,可避免自动二次请求CSS进行渲染         webClient.getOptions().setThrowExceptionOnScriptError(false);//运行错误时,不抛出异常           webClient.setAjaxController(new NicelyResynchronizingAjaxController());// 设置Ajax异步      //ProxyConfig proxyConfig = webClient.getOptions().getProxyConfig(); //设置代理//proxyConfig.setProxyHost("ip");  //proxyConfig.setProxyPort(port);//webclinet设置结束//打开excel表,准备采集入表POIFSFileSystem fs=new POIFSFileSystem(new FileInputStream(path));//得到Excel工作簿对象      HSSFWorkbook wb = new HSSFWorkbook(fs);  //得到Excel工作表对象      HSSFSheet sheet = wb.getSheetAt(0);//获取第一张表int lastrow=sheet.getLastRowNum();  for(int i=1;i<=lastrow;i++){//第一行标题,从第二行开始//HSSFRow row = sheet.createRow(lastrow+1);HSSFRow row = sheet.getRow(i);HSSFCell cellURL=row.getCell(0);//获取第一列URLString url=cellURL.getStringCellValue();HtmlPage page = webClient.getPage(url);  //打开网页webClient.waitForBackgroundJavaScript(10000);//等待1秒//第一步:获取商品名称并写入excel第二列HtmlElement itemTitle =page.getHtmlElementById("itemTitle");HSSFCell cellItemTitle=row.createCell(1);String title=itemTitle.asText();title=title.replaceAll("Details about", "");cellItemTitle.setCellValue(title.trim());   //将商品名称随机分成5组       HSSFCell cellItemreTitle=row.createCell(2); cellItemreTitle.setCellValue(Name2FiveWords(title));    //第二步:获取商品价格并写入第三列HtmlElement price =page.getHtmlElementById("prcIsum");HSSFCell cellPrice=row.createCell(3);cellPrice.setCellValue(price.asText()); //第三步,获取商品图片并写入excel第四列//if(!page.asText().contains("vi_main_img_fs")) continue;HtmlElement propic =page.getHtmlElementById("vi_main_img_fs");DomNodeList<HtmlElement> picnodes=propic.getElementsByTagName("img");StringBuffer strbuf=new StringBuffer();for(int m=0;m<picnodes.size();m++){HtmlElement pic=picnodes.get(m);page=(HtmlPage)pic.click();webClient.waitForBackgroundJavaScript(10000);HtmlElement bigpic =page.getHtmlElementById("icImg");String picsrc=bigpic.getAttribute("src");strbuf.append(picsrc+"\r\n");//图片的网址之间用逗号隔开}String strResult=strbuf.toString();strResult=strResult.substring(0,strResult.length()-1);//截取最后一个字符HSSFCell cellpic=row.createCell(4);//写入excel第列cellpic.setCellValue(strResult);//第四步:卖家信息写入第5列HtmlElement seller =page.getHtmlElementById("mbgLink");String href=seller.getAttribute("href");HSSFCell cellseller=row.createCell(5);cellseller.setCellValue(seller.asText()+"\r\n"+href);//第五步:获取商品详情并写入第6列DomNodeList<DomElement> nodelist=page.getElementsByTagName("div");for(int j=0;j<nodelist.getLength();j++){DomElement domElement = (DomElement)nodelist.get(j);if(domElement.getAttribute("class").equals("itemAttr")){//写入excel第四列HSSFCell cellinfo=row.createCell(6);cellinfo.setCellValue(domElement.asText());break;}} //第六步:获取商品更多介绍并写入第7列HtmlElement descifr =page.getHtmlElementById("desc_ifr");//切换到iframeString src=descifr.getAttribute("src");HtmlPage ifrpage=webClient.getPage(src);//读取iframe网页webClient.waitForBackgroundJavaScript(10000);DomNodeList<DomElement> nodelist2=ifrpage.getElementsByTagName("div");for(int j=0;j<nodelist2.getLength();j++){DomElement domElement = (DomElement)nodelist2.get(j);if(domElement.getAttribute("class").equals("prod_item description")){//写入excel第四列HSSFCell cellmoreinfo=row.createCell(7);cellmoreinfo.setCellValue(domElement.asText());break;}} //写入excel表FileOutputStream out=new FileOutputStream(path);out.flush();wb.write(out);out.close();}wb.close();           fs.close();         }catch (Exception e) {System.err.println( "Exception: " + e );}}//将字符串分为5个部分public static String Name2FiveWords(String title){String s[]=title.split(" ");String sr="";int len=s.length/5+1;//分成5组for(int m=0;m<5;m++){String tmp="";for(int n=0;n<len;n++){if((m*len+n)<s.length) tmp=tmp+" "+s[m*len+n];}                        sr=sr+"|"+tmp.trim();}return sr;}
}

HtmlUnit采集页面信息加工并写入excel表相关推荐

  1. 集思录REITs基金数据python爬取写入EXCEL表

    本文主要讲述REITs基金相关内容, 封闭基金数据获取参见: 集思录封闭基金数据python爬取写入excel表 国债数据获取参见: 和讯网债券数据Python爬取保存成CSV文件之一 1.什么是RE ...

  2. python爬虫_爬取京东商品写入Excel表

    新人的第二篇文章,写的不好请见谅 这段代码只是针对京东的商品信息爬取,很多都是根据页面源码去匹配获取数据的,别的网站用不了,也可能过一段时间官方修改了页面就不能用了,不过这里也只是提供学习使用,希望可 ...

  3. java解析xml文件并写入Excel表

    解析xml文件并写入Excel表 类似于如下格式的xml数据,解析之后将数据写入Excel中 <?xml version="1.0" encoding="UTF-8 ...

  4. 集思录封闭基金数据python爬取写入excel表

    本文是在之前文章"集思录REITs基金数据python爬取写入EXCEL表"的基础上写成的. 封闭式基金,是相对于开放式基金而言的,是指基金规模在发行前已确定,在发行完毕后和规定的 ...

  5. Python 读pdf数据写入Excel表中

    ​ ​ 活动地址:CSDN21天学习挑战赛 目录 一.Python操作PDF的库有很多 二.pdflumber作为案例讲解使用 2.安装配置 2.加载PDF 3.读取pdf文档信息 1)读取pdf文档 ...

  6. 使用python随机生成IP+域名并写入excel表

    题目要求:使用python随机生成IP,随机域名:并创建excel表,将生成的随机IP与域名数据写入: 代码如下: import random import socket import struct ...

  7. java 写入excel表,设置超链接单元格

    XSSF List<String[]> allAIItems; // 将allAIItems写入excel,第一列为超链接(图片地址)try {// 定义输出流os,指向要生成的报告文件O ...

  8. Python实训day12am【网络爬虫大作业简略解析:动态生成html页面、数据写入Excel】

    Python实训-15天-博客汇总表 目录 1.HTML页面设计 2.生成每个城市的HTML页面 2.1.HTML页面代码(weatherTemplate.html) 2.2.实例代码-动态生成htm ...

  9. 读取数据库并写入excel表中 发送邮件

    '''写一个函数 实现 传人表名 就导出到excel 如果这一行数据有乱码 就不写到excel里面 然后把excel 当作附件发到邮箱''' import pymysql,xlwt,yagmailde ...

最新文章

  1. readelf和ldd分析elf文件
  2. SpringMVC-自定义转换器
  3. 在同一session内创建, 修改和删除IBASE component
  4. django-演练-英雄表的添加操作
  5. 新农大计算机学院照片,【新生指南】小团带你逛校园(内附农大全景图~)
  6. HTTP Error 500.19 – Internal Server Error – 0x80070021 (IIS 8.5)
  7. 跟屌丝大哥学DB2-第四课 数据类型 ,表 ,视图,索引,模式,约束(一)
  8. 图解50道sql编写题
  9. 奔图 Pantum P3502DN 打印机驱动
  10. 计算机二级实践网上教程答案,全国计算机等级二级教程课后习题+答案
  11. 数据透视表练习表格_将高级电子表格导出与PHP结合起来以创建数据透视表
  12. 据说这是最难学的十大编程语言 Java排第三
  13. Java注解中produces啥意思_SpringBoot常用注解
  14. angularjs的三目运算
  15. 报数游戏c语言,报数游戏-实战简单设计
  16. 计算机组装的硬件配置及报价,2021组装电脑配置清单及价格表说明
  17. JVM 栈分配与TLAB
  18. 中西方对时间的差异_中西方时间观念差异_英文
  19. 利用tshark对网络数据包做进一步的分析
  20. 功耗大好还是小好_家电是功率大好还是小好....

热门文章

  1. Zabbix实战之客户端自动发现
  2. 是什么调性_协调性训练 | 单脚跳
  3. python入门教程收藏_python入门教程:超详细保你1小时学会Python,快来收藏看看...
  4. 轴自定义图标_9种吸引人的图标样式,能给你的设计带来良好的用户体验
  5. int i=i++;和i=++i;和i++
  6. python-常用函数模块学习-subprocess
  7. spring装载配置文件失败报错:org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException...
  8. 近似装箱问题(三种联机算法实现)
  9. iBatis 的插入一个实体
  10. pthread多线程编程的学习小结