java 利用chrome+puppeteer實(shí)現(xiàn)爬蟲

java在進(jìn)行爬蟲過程中會(huì)因?yàn)榫W(wǎng)站作出反爬措施,導(dǎo)致抓取的內(nèi)容不全面,所以需要利用模擬瀏覽器,打開頁面獲取到頁面的全部內(nèi)容。本文以騰訊新聞https://news.qq.com/為例。
環(huán)境配置參考http://www.itdecent.cn/p/6c3d90bef17f,可以配置nodejs的環(huán)境。
一、使用jsoup解析網(wǎng)頁,當(dāng)解析騰訊新聞時(shí)只能獲取到網(wǎng)頁的源碼,其他與新聞相關(guān)的內(nèi)容一概獲取不到,從而無法抓取到有用的信息。

/**
 * 利用jsoup解析網(wǎng)頁
 * @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;
}

測(cè)試獲取的結(jié)果,獲取不到新聞列表


result.png

二、利用chrome + nodejs的方式進(jìn)行測(cè)試。

/**
 * 利用chrome方式獲取頁面信息
 * @param url
 * @return
 */
public static Document getDocument(String url){
    Document document = null;
    //chrome瀏覽器地址
    String chromePath = "你的chrome瀏覽器根目錄";
    
    //nodejs地址  + 截圖的js的地址(兩個(gè)需要在同一個(gè)目錄之下)
    String nodeJSPath = "nodejs根目錄地址   渲染頁面所需要的js根目錄地址.js";
    
    String BLANK = "    ";
    
    String exec =  nodeJSPath + BLANK + chromePath + BLANK + url;
    
    try {
        //執(zhí)行腳本命令
        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;
}

運(yùn)行獲取到的結(jié)果


result2.png

而在任務(wù)執(zhí)行過程中所需要的渲染頁面的js


render.png

寫好js后可以利用cdm進(jìn)行測(cè)試。java中也可以利用相同的方法進(jìn)行截圖。只需要在程序中將js換掉就行。并增加一個(gè)參數(shù)


截圖地址.png

截圖所需要的js


截圖
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML標(biāo)準(zhǔn)。 注意:講述HT...
    kismetajun閱讀 28,829評(píng)論 1 45
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 15,437評(píng)論 4 61
  • 關(guān)于Mongodb的全面總結(jié) MongoDB的內(nèi)部構(gòu)造《MongoDB The Definitive Guide》...
    中v中閱讀 32,313評(píng)論 2 89
  • 自以為功, 自以為利, 自以為不可缺。 其功不高, 其利不富, 其人隨取代之。 以勿貪功之心干其事,則功德無量, ...
    一小王爺一閱讀 149評(píng)論 3 1
  • 從北京回到重慶快一個(gè)月的時(shí)間了 不知道這段時(shí)間是怎么熬過來的 一個(gè)月時(shí)間仿佛過了一年 又仿佛如同夢(mèng)一場 給了我歸零...
    巧丫頭巧啊閱讀 303評(píng)論 0 1

友情鏈接更多精彩內(nèi)容