亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 語言 > JavaScript > 正文

nodejs通過phantomjs實現下載網頁

2024-05-06 16:19:12
字體:
來源:轉載
供稿:網友

這篇文章主要介紹了nodejs通過phantomjs實現下載網頁的方法,有需要的小伙伴可以參考下。

功能其實很見簡單,通過 phantomjs.exe 采集 url 加載的資源,通過子進程的方式,啟動nodejs 加載所有的資源,對于css的資源,匹配css內容,下載里面的url資源

當然功能還是很簡單的,在響應式設計和異步加載的情況下,還是有很多資源沒有能夠下載,需要根據實際情況處理下

首先當然是下載 nodejs 和 phantomjs

下面是 phantomjs.exe 執行的 down.js

 

 
  1. var page = require('webpage').create(), 
  2. system = require('system'); 
  3. var spawn = require("child_process").spawn 
  4.  
  5. if (system.args.length === 1) { 
  6. console.log('Usage: netsniff.js <some URL>'); 
  7. phantom.exit(1); 
  8. else { 
  9. var urls = []; 
  10. page.address = system.args[1]; 
  11. page.onResourceReceived = function (res) { 
  12. if (res.stage === 'start') { 
  13. urls.push(res.url); 
  14. }; 
  15. page.open(page.address, function (status) { 
  16. var har; 
  17. if (status !== 'success') { 
  18. console.log('FAIL to load the address'); 
  19. phantom.exit(1); 
  20. else { 
  21. console.log('down resource ' + urls.length + ' urls.'); 
  22. var child = spawn("node", ["--harmony""downHtml.js", urls.join(',')]) 
  23. child.stdout.on("data"function (data) { 
  24. console.log(data); 
  25. }) 
  26. child.stderr.on("data"function (data) { 
  27. console.log(data); 
  28. }) 
  29. child.on("exit"function (code) { 
  30. phantom.exit(); 
  31. })  
  32. }); 

下面是對應的node運行的 downHtml.js

 

 
  1. "use strict"
  2. var fs = require('fs'); 
  3. var http = require('http'); 
  4. var path = require('path'); 
  5. var r_url = require('url'); 
  6.  
  7. var dirCache = {};//緩存減少判斷 
  8. function makedir (pathStr, callback) { 
  9. if (dirCache[pathStr] == 1) { 
  10. callback(); 
  11. else { 
  12. fs.exists(pathStr, function (exists) { 
  13. if (exists == true) { 
  14. dirCache[pathStr] == 1; 
  15. callback(); 
  16. else { 
  17. makedir(path.dirname(pathStr), function () { 
  18. fs.mkdir(pathStr, function () { 
  19. dirCache[pathStr] == 1; 
  20. callback(); 
  21. }) 
  22. }); 
  23. }) 
  24. }; 
  25.  
  26. var reg = /[:,]/s*url/(['"]?.*?(/1)/)/g 
  27. var reg2 = //((['"]?)(.*?)(/1)/)/ 
  28. var isDownMap = {}; 
  29. var downImgFromCss = function (URL) { 
  30. http.get(URL, function(res) { 
  31. //console.log(path.resolve(process.cwd(), 'index.min.css')) 
  32. //res.pipe(fs.createWriteStream(path.resolve(process.cwd(), 'index.min.css'))); 
  33. var body = ""
  34. res.setEncoding('utf8'); 
  35. res.on('data'function (chunk) { 
  36. body += chunk; 
  37. }); 
  38. res.on('end'function () { 
  39. var match = body.match(reg); 
  40. for (var i = 0, len = match.length; i < len; i++){ 
  41. var m = match[i].match(reg2); 
  42. if (m && m[2]) { 
  43. var url = m[2]; 
  44. let imgUrl = r_url.resolve(URL, url); 
  45. if (!isDownMap[imgUrl]) { 
  46. var uo = r_url.parse(imgUrl); 
  47. let filepath = CWD + '/' + uo.hostname + uo.pathname; 
  48. makedir(path.dirname(filepath), function () { 
  49. http.get(imgUrl, function (res) { 
  50. res.pipe(fs.createWriteStream(filepath)); 
  51. }) 
  52. }) 
  53. isDownMap[imgUrl] = 1; 
  54. }); 
  55. }); 
  56.  
  57. var URLS = process.argv[2].split(','); 
  58. var CWD = process.cwd(); 
  59. //下載資源 
  60. URLS.forEach(function (URL) { 
  61. var uo = r_url.parse(URL); 
  62. var filepath; 
  63. if (uo.pathname == '/' || uo.pathname == '') { 
  64. filepath = CWD + '/' + uo.hostname + '/index.html'
  65. else { 
  66. filepath = CWD + '/' + uo.hostname + uo.pathname; 
  67. makedir(path.dirname(filepath), function () { 
  68. http.get(URL, function (res) { 
  69. if (URL.indexOf('.css') != -1 || (res.headers["content-type"] && res.headers["content-type"].indexOf('text/css')!= -1)) { 
  70. console.log('down images form css file:' + URL + '.'); 
  71. downImgFromCss(URL); 
  72. res.pipe(fs.createWriteStream(filepath)); 
  73. }) 
  74. }); 
  75. }); 

down.js downHtml.js 放在同一個文件夾下 通過下列 cmd 運行

D:/phantomjs-2.0.0-windows/bin/phantomjs.exe down.jshttp://www.youku.com/

以上所述就是本文的全部內容了,希望大家能夠喜歡。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久中文精品视频| 日韩高清av一区二区三区| 97婷婷大伊香蕉精品视频| 国产在线久久久| 久国内精品在线| 亚洲最大的成人网| 日韩精品在线影院| 亚洲性视频网站| 97在线日本国产| 日韩欧美中文字幕在线播放| 色先锋久久影院av| 欧美精品18videos性欧美| 影音先锋欧美在线资源| 日韩最新免费不卡| 成人a级免费视频| 亚洲美女福利视频网站| 亚洲精品视频在线观看视频| 欧美性猛xxx| 国产成人精品免费视频| 国内精品小视频在线观看| 日本成人黄色片| 欧美黄色免费网站| 在线看片第一页欧美| 欧美乱大交做爰xxxⅹ性3| 日韩精品高清在线| 国产精品久久久久久五月尺| 欧美乱妇高清无乱码| xxxxxxxxx欧美| 福利视频一区二区| 欧美日韩国产在线播放| 一区二区亚洲精品国产| 国产亚洲一级高清| 成人福利在线视频| 欧美性黄网官网| 成人国产在线视频| 98视频在线噜噜噜国产| 中文字幕9999| 亚洲激情第一页| 黄网站色欧美视频| 亚洲成年人在线播放| 国产视频精品va久久久久久| 欧美性xxxx极品高清hd直播| 亚洲欧洲高清在线| 欧美老女人性生活| 97久久精品人人澡人人爽缅北| 日韩欧美精品免费在线| 久久久久久久久爱| 91高清免费在线观看| 韩国日本不卡在线| 日韩av在线高清| 日本国产高清不卡| 亚洲国产精品小视频| 亚洲精品国产电影| 日韩av网址在线| 国产视频在线观看一区二区| 日韩av毛片网| 久久中文字幕在线| 欧美巨乳美女视频| 一区二区三区 在线观看视| 日本亚洲欧洲色α| 91久久精品国产91久久| 国产91对白在线播放| 日韩av电影院| 日本精品一区二区三区在线播放视频| 久久69精品久久久久久国产越南| 国产精品入口免费视频一| 亚洲电影免费观看高清完整版在线观看| 国产精品扒开腿做爽爽爽视频| 亚洲欧美日韩在线高清直播| 麻豆国产va免费精品高清在线| 亚洲人成电影网站色www| 欧美性色xo影院| 欧美另类交人妖| 日韩精品亚洲元码| 久久视频在线播放| 久久久人成影片一区二区三区| 亚洲一区国产精品| 欧美激情一区二区三区成人| www.久久撸.com| 国产精品视频xxx| 国产成人免费91av在线| 国产成人亚洲综合| 日韩中文字幕视频| 97视频在线观看亚洲| 日韩精品亚洲元码| 国产精品成人aaaaa网站| 久久久久久成人精品| 伊人久久精品视频| 国产亚洲成av人片在线观看桃| 亚洲国产日韩欧美在线图片| 亚洲午夜色婷婷在线| 日韩欧美国产成人| 日韩欧美aⅴ综合网站发布| 国产精品久久久久久久久借妻| 国产精品亚洲片夜色在线| 久久久久久久av| 成人做爽爽免费视频| 国产成人亚洲综合91精品| 亚洲精品欧美一区二区三区| 国产精品无码专区在线观看| 午夜美女久久久久爽久久| 欧美日韩精品在线视频| 欧美成人免费一级人片100| 久久资源免费视频| 精品亚洲一区二区三区四区五区| 亚洲欧洲在线播放| 欧美xxxx做受欧美.88| 亚洲视频第一页| 久久伊人91精品综合网站| 91在线观看欧美日韩| 日韩福利伦理影院免费| 色综合久久88色综合天天看泰| 久久久之久亚州精品露出| 国内成人精品一区| 亚洲最大av网| 欧美成aaa人片在线观看蜜臀| 日本一区二区在线播放| 精品福利在线看| 91sao在线观看国产| 国产成人精品视频在线| 亚洲国产精彩中文乱码av| 国产免费观看久久黄| 69av成年福利视频| 日韩激情片免费| 国产精品www色诱视频| 亚洲免费成人av电影| 日韩av有码在线| 国产精品极品美女在线观看免费| 日韩欧美高清视频| 久久久久日韩精品久久久男男| 亚洲欧洲午夜一线一品| 欧美夜福利tv在线| 亚洲国产福利在线| 97国产精品人人爽人人做| 国产精品一区二区三区久久久| 狠狠躁夜夜躁人人躁婷婷91| 亚洲一区二区三区香蕉| 国产精品麻豆va在线播放| 日韩大陆欧美高清视频区| 欧美性xxxx极品高清hd直播| 日韩女优人人人人射在线视频| 欧美有码在线视频| 久久天天躁狠狠躁夜夜爽蜜月| 亚洲国产高清高潮精品美女| 国产成人精品久久二区二区91| 亚洲美女在线看| 欧洲成人在线观看| 91精品啪aⅴ在线观看国产| 亚洲天堂网站在线观看视频| 一区二区欧美在线| 97视频免费看| 精品久久久久久久久久久久久| 国产福利视频一区| 中文字幕在线视频日韩| 精品久久久香蕉免费精品视频| wwwwwwww亚洲| 一区二区三区高清国产| 激情亚洲一区二区三区四区| 亚洲精品综合精品自拍| 久久色精品视频| 久久国产精品久久久久久久久久| 欧美性生交xxxxx久久久| 欧美电影在线观看高清| 欧美一级电影在线|