❶ Nodejs+Express開發web,為什麼中文顯示為亂碼
npm install -g nodegrass //安裝此模塊使用 var gs = require('nodegrass'); gs.get('http://www.jd.com', function(data){ console.log(data);//將data輸出即使中文 }, 'gbk').on('error',funtion(err){ console.log(err); }); 可以查查nodegr...
❷ nodejs運行會出現亂碼,該怎麼解決
nodejs亂碼處理
1.處理回顯亂碼
res.write("<head><meta charset='utf-8'></head>");
2.處理傳參亂碼
querystring.escape(str)
escape可使傳入的字元串進行編碼
querystring.escape
querystring.escape("name=慕白");
/*
return:
'name%3D%E6%85%95%E7%99%BD'
*/
querystring.unescape(str)
unescape方法可將含有%的字元串進行解碼
querystring.unescape
querystring.unescape('name%3D%E6%85%95%E7%99%BD');
/*
return:
'name=慕白'
*/
3.與編碼相關的代碼
var encoding = require('encoding');var iconv = require('iconv-lite');
console.log(encoding.convert("%E7%9A%84%E5%A3%AB%E9%80%9F%E9%80%92", "utf-8"));
console.log(iconv.decode('%E7%9A%84%E5%A3%AB%E9%80%9F%E9%80%92', 'utf-8'));
❸ Nodejs亂碼怎麼解決
Node.js 支持中文不太好(實際上是javascript支持),見《Node.js開發指南》。
要想Node.js正常顯示中文,需要兩點:
1、js文件保存為unicode格式。js文件是否為unicode格式,一個簡單的方法是使用記事本來判斷。使用記事本打開JS文件,點菜單另存為,看編碼格式是否為"UTF-8"。若不是,可使用UltraEdit工具進行轉換,使用記事本也可以轉換。
2、在js文件中增加編碼說明meta數據,讓瀏覽器知道使用什麼編碼來解釋網頁。
兩個條件缺一不可。
一個Node.js中使用中文的例子如下,該app.js需保存為utf-8格式,同時在文中增加meta編碼數據說明:
[javascript]view plain
<metacharset="utf-8"/>
[javascript]view plain
//app.js
varhttp=require('http');
http.createServer(function(req,res){
res.writeHead(200,{'Content-Type':'text/html'});
res.write('<head><metacharset="utf-8"/></head>');
res.write('<h1>Node.js</h1>');
res.write('<b>親愛的,你慢慢飛,小心前面帶刺的玫瑰...</b>');
res.end('<p>HelloWorld</p>');
}).listen(3000);
console.log(".");
❹ 如何使用nodejs做爬蟲程序
解壓到一個目錄,在cmd命令控制台進入該目錄,運行npm install安裝依賴包。之後運行node 爬蟲主程序.js。
❺ nodejs中使用$.get 獲取html出現中文亂碼
你好!
var
iconv
=
require('iconv-lite');
html=
iconv.decode(html,
'utf8')
試試這樣行不行,我沒測試
其實換這個試試
var
http=
require('http')
http.get(url,function(){})
也可以
僅代表個人觀點,不喜勿噴,謝謝。
❻ nodejs怎麼才能用爬蟲爬取https網頁
爬蟲爬https站點抄處理,方法步驟如下:
1、百襲度蜘蛛爬蟲Spider爬取HTTPS網站
1)、根據網頁中的超鏈接是否是HTTPS,網路中會有一些超鏈,如果是HTTPS會認為是HTTPS站點。
2)、根據站長平台提交入口的提交方式,例如主動提交,如果在文件當中提交的是HTTPS鏈接會以HTTPS的形式來發現。
3)、參考前鏈的抓取相對路徑,第一個網頁是HTTPS的,網站內容裡面的路徑提供的是相對路徑,會認為這種鏈接是HTTPS。
4)、參考鏈接的歷史狀況,使用這種方式的原因主要是為了糾錯,如果錯誤提取HTTPS會遇到兩種情況,一種因為HTTPS不可訪問會抓取失敗,第二即使能抓成功可能展現出來的可能不是站長希望的,所以會有一定的糾錯。
2、HTTPS鏈接的抓取
現在比較常見的兩種,第一種是純HTTPS抓取,就是它沒有HTTP的版本,第二個是通過HTTP重定向到HTTPS,這兩種都能正常的進行抓取跟HTTP抓取的效果是一樣的。
3、HTTPS的展現
對於HTTPS數據,展現端會有明顯的提示
❼ 如何通過nodeJs爬蟲獲取數據簡單實現代碼
var http=require('http');
var cheerio=require('cheerio');//頁面獲取到的數據模塊
var url='http://www.jcpeixun.com/lesson/1512/';
function filterData(html){
/*所要獲取到的目標數組
var courseData=[{
chapterTitle:"",
videosData:{
videoTitle:title,
videoId:id,
videoPrice:price
}
}] */
var $=cheerio.load(html);
var courseData=[];
var chapters=$(".list-collapse");
chapters.each(function(item){
var chapterTitle=$(this).find(".collapse-head").find("label").text();
var videos=$(this).find(".listview5").children("li");
var chaptersData={
chaptersTitle:chapterTitle,
videosData:[]
}
videos.each(function(item){
var videoTitle=$(this).find(".ml10").attr('data-lesson-name');
var videoId=$(this).find(".ml10").attr('data-lesson-id');
var vadeoPrice=$(this).find(".colblue").text();
chaptersData.videosData.push({
title:videoTitle,
id:videoId,
price:vadeoPrice
})
})
courseData.push(chaptersData)
})
return courseData
}
function printCourseInfo(courseData){
courseData.forEach(function(item){
console.log(item.chaptersTitle+'\n');
item.videosData.forEach(function(item){
console.log(item.title+'【'+item.id+'】'+item.price+'\n')
})
})
}
http.get(url,function(res){
html="";
res.on("data",function(data){
html+=data
})
res.on('end',function(){
var courseData=filterData(html);
printCourseInfo(courseData)
})
})
❽ nodejs上傳文件,文件內容中文亂碼
前端上傳的是復gbk, 你後端當成utf8, 當然制這樣了.
一種是你前端規定只能上傳utf8文本文件;
還有一種你知道前端大部分都是gbk, 後端做gbk到utf8的轉化. (我那個時候nodejs似乎還沒內置gbk解碼器, 現在不知道了)
❾ nodejs中使用$.get 獲取html出現中文亂碼
npm install -g nodegrass //安裝此模塊使用
var gs = require('nodegrass');
gs.get('http://www.jd.com', function(data){
console.log(data);//將data輸出即使中文
}, 'gbk').on('error',funtion(err){
console.log(err);
});
可以查查nodegrass的說明 https://github.com/scottkiss/nodegrass