国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

node.js抓取并分析網頁內容有無特殊內容的js文件

2019-11-20 11:15:15
字體:
來源:轉載
供稿:網友

nodejs獲取網頁內容綁定data事件,獲取到的數據會分幾次相應,如果想全局內容匹配,需要等待請求結束,在end結束事件里把累積起來的全局數據進行操作!

舉個例子,比如要在頁面中找有沒有www.baidu.com,不多說了,直接放代碼:

//引入模塊var http = require("http"),fs = require('fs'),url = require('url');//寫入文件,把結果寫入不同的文件var writeRes = function(p, r) {   fs.appendFile(p , r, function(err) {    if(err)       console.log(err);    else       console.log(r);  });},//發請求,并驗證內容,把結果寫入文件postHttp = function(arr, num) {   console.log('第'+num+"條!")   var a = arr[num].split(" - ");   if(!a[0] || !a[1]) {     return;   }   var address = url.parse(a[1]),   options = {     host : address.host,     path: address.path,     hostname : address.hostname,     method: 'GET',     headers: {      'User-Agent' : 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.122 Safari/537.36'    }   }   var req = http.request(options, function(res) {     if (res.statusCode == 200) {        res.setEncoding('UTF-8');        var data = '';        res.on('data', function (rd) {            data += rd;        });        res.on('end', function(q) {          if(!~data.indexOf("www.baidu.com")) {             return writeRes('./no2.txt', a[0] + '--' + a[1] + '/n');                      } else {             return writeRes('./has2.txt', a[0] + '--' + a[1] + "/n");          }        })     } else {        writeRes('./error2.txt', a[0] + '--' + a[1] + '--' + res.statusCode + '/n');     }   });   req.on('error', function(e) {     writeRes('./error2.txt', a[0] + '--' + a[1] + '--' + e + '/n');   })   req.end();},//讀取文件,獲取需要抓取的頁面openFile = function(path, coding) {   fs.readFile(path, coding, function(err, data) {     var res = data.split("/n");       for (var i = 0, rl = res.length; i < rl; i++) {        if(!res[i])          continue;        postHttp(res, i);       };     })};openFile('./sites.log', 'utf-8');

上面代碼大家可以看的懂吧,有哪里不清楚的朋友歡迎給我留言,具體的還要靠大家發揮應用到實踐當中。

下面給大家介紹Nodejs對于網頁抓取的能力

首先PHP。先說優勢:網上抓取和解析html的框架一抓一大把,各種工具直接拿來用就行了,比較省心。缺點:首先速度/效率很成問題,有一次下載電影海報的時候,由于是crontab定期執行,也沒做優化,開的php進程太多,直接把內存撐爆了。然后語法方面也很拖沓,各種關鍵字 符號 太多,不夠簡潔,給人一種沒有認真設計過的感覺,寫起來很麻煩。

Node.js。優點是效率、效率還是效率,由于網絡是異步的,所以基本如同幾百個進程并發一樣強大,內存和CPU占用非常小,如果沒有對抓取來的數據進行復雜的運算加工,那么系統的瓶頸基本就在帶寬和寫入MySQL等數據庫的I/O速度。當然,優點的反面也是缺點,異步網絡代表你需要callback,這時候如果業務需求是線性了,比如必須等待上一個頁面抓取完成后,拿到數據,才能進行下一個頁面的抓取,甚至多層的依賴關系,那就會出現可怕的多層callback!基本這時候,代碼結構和邏輯就會一團亂麻。當然可以用Step等流程控制工具解決這些問題。

最后說Python。如果你對效率沒有極端的要求,那么推薦用Python!首先,Python的語法很簡潔,同樣的語句,可以少敲很多次鍵盤。然后,Python非常適合做數據的處理,比如函數參數的打包解包,列表解析,矩陣處理,非常方便。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 龙口市| 喀什市| 新丰县| 陆川县| 蕉岭县| 漯河市| 新乡市| 东阿县| 垫江县| 高青县| 益阳市| 西宁市| 敦化市| 潼关县| 亚东县| 纳雍县| 孟州市| 城市| 凤翔县| 房山区| 南木林县| 库车县| 乌兰浩特市| 苍南县| 奎屯市| 西峡县| 丰顺县| 黎城县| 庐江县| 汉寿县| 宜兴市| 威海市| 赤壁市| 凤翔县| 永兴县| 石嘴山市| 仁怀市| 调兵山市| 义乌市| 黎平县| 宣汉县|