1、需求:支持代理设置访问,并采集网页下iframe框架内的页面内容

2、参考代码如下:

package com;import java.io.FileInputStream;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.DomNodeList;
import com.gargoylesoftware.htmlunit.html.HtmlElement;
import com.gargoylesoftware.htmlunit.html.HtmlPage;public class EBayHU {public static void main(String[] args) {//打开excel表,准备采集入表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());//设置代理ProxyConfig proxyConfig = webClient.getOptions().getProxyConfig(); proxyConfig.setProxyHost("IP");  proxyConfig.setProxyPort(port);//获取页面HtmlPage page = webClient.getPage("url"); webClient.waitForBackgroundJavaScript(10000);//商品标题HtmlElement itemTitle =page.getHtmlElementById("itemTitle");System.out.println(itemTitle.asText());//商品图片HtmlElement propic =page.getHtmlElementById("vi_main_img_fs");DomNodeList<HtmlElement> picnodes=propic.getElementsByTagName("img");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 bigpicsrc=bigpic.getAttribute("src");System.out.println(bigpicsrc);}//卖家信息HtmlElement seller =page.getHtmlElementById("mbgLink");String href=seller.getAttribute("href");System.out.println(href);System.out.println(seller.asText());//商品详情HtmlElement descifr =page.getHtmlElementById("desc_ifr");//切换到iframeString src=descifr.getAttribute("src");HtmlPage ifrpage=webClient.getPage(src);//读取iframe网页webClient.waitForBackgroundJavaScript(10000);HtmlElement desc =ifrpage.getHtmlElementById("desc");System.out.println(desc.asText());}catch (Exception e) {System.err.println( "Exception: " + e ); }}
}

HtmlUnit设置代理并解析IFrame页面相关推荐

  1. java伪协议_通过伪协议解决父页面与iframe页面通信的问题

    我们经常会有父页面与iframe页面的操作,比如 这个iframe里面的内容是js写的.如以下代码 var iframe = document.getElementById("iframe& ...

  2. 用iframe设置代理解决ajax跨域请求问题

    用iframe设置代理解决ajax跨域请求问题 参考文章: (1)用iframe设置代理解决ajax跨域请求问题 (2)https://www.cnblogs.com/ranzige/p/370965 ...

  3. 手机手动设置代理之后打不开页面

    如果发现手机设置代理之后一切设置正常,就是没有打开页面,那出问题的地方很有可能是Windows自带的安全防火墙墙了它,只要打开控制面板把防火墙关了就可以了.

  4. htmlUnit的读取js渲染的页面

    htmlUnit的读取js渲染的页面 我这边有个这么的需求,要求前端每次上版本的时候,有一个版本号.然后后端去爬前端,比较禅道的版本发布计划,如果发布计划和生产上的版本号不一致,就告警. 这个跟后端的 ...

  5. 了解一下iframe页面嵌入使用,轻松实现页面集成

    前言 在跨域请求不同服务方或是兼容先前系统的页面时,你可能想利用AJAX从网页上下载HTML并粘贴到div中,这将带来不安全注入的问题. 此时,通过iframe页面嵌入可以很好地解决上述问题. 本文带 ...

  6. Nginx-部署2个vue项目(多个项目)-二级域名设置代理

    前言 最近在实际开发过程中,需要在服务器部署2个项目.需要nginx二级域名. 开始时候在网上查了一圈,各有说法,不是很全,很头大.这里把自己成功的二级域名代理记录一下. 网上有很多文章说要该rout ...

  7. htmlunit使用代理IP

    有时候频繁的爬取第三方站点内容,会被站点的防火墙拦截,IP拉黑,所以这时候,就要用到代理IP,拉黑一个就换一个 htmlunit实用代理的方式比较简单,WebClient重载构造方法就有提供 pack ...

  8. Jsonp、CORS、vue设置代理跨域

    Jsonp的原理 前言: 下面是原生jsonp的使用案例.后端使用node搭建的简易服务器. 1.前段代码 <!DOCTYPE html><html lang="en&qu ...

  9. urllib.request 设置代理进行爬取,防止被封IP,各种hander高级用法

    import urllib.request proxy_handler = urllib.request.ProxyHandler({ 'http': 'http://127.0.0.1:9743', ...

最新文章

  1. linux 压缩排除某个文件夹,linux tar压缩排除 某类型文件 某个文件夹
  2. css expressionr,CSS自定义属性expression_r
  3. 初一模拟赛总结(2019.4.13)
  4. jpa jql 时间范围查询_SpringBoot整合JPA案例
  5. 给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数
  6. 不是所有的U盘都能作为启动盘
  7. 8.软件架构设计:大型网站技术架构与业务架构融合之道 --- 高并发问题
  8. 二次拟合r方_使用SPSS拟合曲线
  9. 计算机网络期中考试总结反思,关于期中反思的说说
  10. 金融危机背景下大学生就业
  11. 创业公司如何实施股权激励
  12. 细说 AppbarLayout,如何理解可折叠 Toolbar 的定制
  13. SVN服务器搭建、客户端安装超详细图解教程
  14. struct sk_buff结构体详解
  15. 如何运用3Dmax制作游戏武器模型
  16. 利用Matlab考察数据的边缘正态性 作Q_Q图
  17. 常用插件:分享12款超级好用的 Chrome 插件
  18. CocosCreator 创建纯色精灵(Sprite单色)组件
  19. 安卓常用框架、模块、软件
  20. **华大单片机HC32使用Jlink下载程序(免币)**

热门文章

  1. 所长不会用计算机,梅州市公安局: 两派出所所长不会电脑被停职
  2. 设置在本文件里查找_Win 10 自带聚焦搜索?这么设置轻松查找电脑文件
  3. mysqlsql varchar类型只取前四个_Apache Doris0.12.0 发布,进入 Apache 孵化器后第四个正式版本...
  4. python2必须安装步骤_Python入门-第三方库的安装及环境配置(2)
  5. 从物联网设备生命周期理解Apple Homekit框架
  6. 解题:HEOI 2016 求和
  7. mysql与Json学习总结
  8. Deepin中设置文件或文件夹权限
  9. 架构漫谈:我心中的架构
  10. 共享一个调用微信公众平台接口的客户端类库