java 利用chrome+puppeteer实现爬虫

java在进行爬虫过程中会因为网站作出反爬措施,导致抓取的内容不全面,所以需要利用模拟浏览器,打开页面获取到页面的全部内容。本文以腾讯新闻https://news.qq.com/为例。
环境配置参考//www.greatytc.com/p/6c3d90bef17f,可以配置nodejs的环境。
一、使用jsoup解析网页,当解析腾讯新闻时只能获取到网页的源码,其他与新闻相关的内容一概获取不到,从而无法抓取到有用的信息。

/**
 * 利用jsoup解析网页
 * @param url
 * @return
 */
public static Document getDocumentByJsoup(String url){
    Document document = null;
    try {
        document = Jsoup.connect(url).timeout(15000).get();
        String text = document.getElementsByTag("body").text();
        System.err.println(text);
    } catch (IOException e) {
        e.printStackTrace();
    }
    return document;
}

测试获取的结果,获取不到新闻列表


result.png

二、利用chrome + nodejs的方式进行测试。

/**
 * 利用chrome方式获取页面信息
 * @param url
 * @return
 */
public static Document getDocument(String url){
    Document document = null;
    //chrome浏览器地址
    String chromePath = "你的chrome浏览器根目录";
    
    //nodejs地址  + 截图的js的地址(两个需要在同一个目录之下)
    String nodeJSPath = "nodejs根目录地址   渲染页面所需要的js根目录地址.js";
    
    String BLANK = "    ";
    
    String exec =  nodeJSPath + BLANK + chromePath + BLANK + url;
    
    try {
        //执行脚本命令
        Process process = Runtime.getRuntime().exec(exec);
        
        System.err.println("ecec =======> " + exec);
        
        InputStream is = process.getInputStream();
        document = Jsoup.parse(is, "UTF-8", url);
      
        try {
            process.waitFor();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }


        process.destroy();
        process = null;
         
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    return document;
}

运行获取到的结果


result2.png

而在任务执行过程中所需要的渲染页面的js


render.png

写好js后可以利用cdm进行测试。java中也可以利用相同的方法进行截图。只需要在程序中将js换掉就行。并增加一个参数


截图地址.png

截图所需要的js


截图
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 27,802评论 1 45
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,261评论 4 61
  • 关于Mongodb的全面总结 MongoDB的内部构造《MongoDB The Definitive Guide》...
    中v中阅读 32,048评论 2 89
  • 自以为功, 自以为利, 自以为不可缺。 其功不高, 其利不富, 其人随取代之。 以勿贪功之心干其事,则功德无量, ...
    一小王爷一阅读 138评论 3 1
  • 从北京回到重庆快一个月的时间了 不知道这段时间是怎么熬过来的 一个月时间仿佛过了一年 又仿佛如同梦一场 给了我归零...
    巧丫头巧啊阅读 263评论 0 1