国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

關于使用cheerio抓取一個網頁遇見的問題以及解決的過程

hedge_hog / 3609人閱讀

摘要:這樣嘗試了之后,網頁中文編碼的問題會解決大部分,但是有的地方還是存在中文亂碼這樣的問題主要是我在進行了轉碼成之后沒有將新插入后的頁面轉碼到初始狀態,一旦被瀏覽器下載之后瀏覽器會無法識別部分的編碼從而導致一部分編碼。

最近做開發有一個需求需要用cheerio抓取一個網頁,然后將一段js腳本插入到標簽的末尾。然后還要保證瀏覽器運行正?!,F在把這些遇見過的問題記錄一下。
這里面就存在一個問題就是 :

Node.js默認是不支持utf-8編碼的,所以抓取非 utf-8 的中文網頁時會出現亂碼問題,比如網易的首頁編碼是 gb2312,抓取時會出現亂碼,百度下眾大佬們的看法都是使用icon-lite 進行轉碼(有興趣可以自行百度cheerio中文亂碼)。(只是他們說的情況跟我這邊還不太一樣。我需要將網頁返還給瀏覽器)。然后我就開始動手試了一下。思路大概是這樣的:獲取代理層將請求回來的html請求頭header中的content-type 來判斷這個網頁的編碼方式。然后使用iconv.decode將其進行相應的轉碼然后在做js替換。但是這樣的話是有漏洞的,如下圖


有的網站開發規范性不夠甚至在content-type 連網頁的編碼方式都不去聲明。所以這條路是不通的只能通過抓取標簽來確定網頁相應的編碼進而轉碼。

var newDataStr = "";
             var charset="utf-8";
              var arr=responseDetail.response.body.toString().match(/]*?)>/g);
              if(arr){
                arr.forEach(function(val){
                  var match=val.match(/charsets*=s*(.+)"/);
                  if(match && match[1]){
                    if(match[1].substr(0,1)==""")match[1]=match[1].substr(1);
                    charset=match[1].trim();
                    return false;
                  }
                })
                  }
                var html = iconv.decode(responseDetail.response.body, charset);

         // var html = responseDetail.response.body.toString();
         var $ = cheerio.load(html);
         responseDetail.response.body = newDataStr;
         return  {response: responseDetail.response}   
         
       
     

這樣嘗試了之后,網頁中文編碼的問題會解決大部分,但是有的地方還是存在中文亂碼


這樣的問題主要是我在node進行了轉碼成gbk之后沒有將新插入后的頁面轉碼到初始狀態,一旦被瀏覽器下載之后瀏覽器會無法識別部分js xhr的編碼從而導致一部分編碼。所以

newDataStr=iconv.encode($.html(), charset); 將其返回到最初的編碼方式就可以了

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/88979.html

相關文章

  • 分分鐘教你用node.js寫個爬蟲

    摘要:爬蟲介紹二爬蟲的分類通用網絡爬蟲全網爬蟲爬行對象從一些種子擴充到整個,主要為門戶站點搜索引擎和大型服務提供商采集數據。 分分鐘教你用node.js寫個爬蟲 寫在前面 十分感謝大家的點贊和關注。其實,這是我第一次在segmentfault上寫文章。因為我也是前段時間偶然之間才開始了解和學習爬蟲,而且學習node的時間也不是很長。雖然用node做過一些后端的項目,但其實在node和爬蟲方面...

    fanux 評論0 收藏0
  • node爬蟲 抓取網頁實現

    摘要:一前言一直感覺爬蟲是個挺高端的東西大數據時代爬蟲顯得尤為重要。 一、前言 一直感覺爬蟲是個挺高端的東西 大數據時代 爬蟲顯得尤為重要。經過一番探索,終于用node實現了這個功能,還包括對抓取內容的解析 二、正文 1、首先搭建一個http服務,這里使用我們熟悉的koa(這個是非必須的 你也可以使用純node去抓 這里主要為了方便交互、看效果或者給非技術人員使用方便)服務端 index.j...

    alighters 評論0 收藏0
  • 使用 node 抓取網頁圖片

    摘要:使用抓取網頁圖片的使用非常廣泛,可以做通信,做爬蟲,甚至可以做桌面應用程序。今天就利用閑暇時間寫個小小的分享利用爬取百度圖片首頁的圖片。 使用 node 抓取網頁圖片 node 的使用非常廣泛,可以做通信,做爬蟲,甚至可以做桌面應用程序。 今天就利用閑暇時間寫個小小的分享:利用 node 爬取百度圖片首頁的圖片。 對,就是中間那幾張: showImg(https://segmentfa...

    genedna 評論0 收藏0
  • Nodejs爬蟲--抓取豆瓣電影網頁數據(下)

    摘要:接著上篇爬蟲抓取豆瓣電影網頁數據上本篇主要描述將上次抓取的數據存入數據庫前提百度或谷歌的安裝教程,安裝本地并成功運行推薦一款數據庫可視化管理工具。 接著上篇 Nodejs爬蟲--抓取豆瓣電影網頁數據(上) 本篇主要描述將上次抓取的數據存入mongodb數據庫 前提:百度或谷歌mongodb的安裝教程,安裝本地并成功運行 推薦一款mongodb數據庫可視化管理工具:Robomongo...

    legendaryedu 評論0 收藏0
  • Nodejs爬蟲--抓取豆瓣電影網頁數據(下)

    摘要:接著上篇爬蟲抓取豆瓣電影網頁數據上本篇主要描述將上次抓取的數據存入數據庫前提百度或谷歌的安裝教程,安裝本地并成功運行推薦一款數據庫可視化管理工具。 接著上篇 Nodejs爬蟲--抓取豆瓣電影網頁數據(上) 本篇主要描述將上次抓取的數據存入mongodb數據庫 前提:百度或谷歌mongodb的安裝教程,安裝本地并成功運行 推薦一款mongodb數據庫可視化管理工具:Robomongo...

    techstay 評論0 收藏0

發表評論

0條評論

hedge_hog

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<