为什么80%的码农都做不了架构师?>>>   

使用nodejs抓取 https://themeforest.net 网页模版预览放入mongoose。

以后找模版就不用那么费劲了,我是太懒了。。。

执行图片:

代码:

var request = require('request');
var cheerio = require('cheerio');
var mongoose = require('mongoose');var Schema = mongoose.Schema;
mongoose.connect('mongodb://localhost/theme');
var Theme = new Schema({text: String,url: String,img: String
});
var ThemeModel = mongoose.model('Themes', Theme);
var urlPrefix = 'https://themeforest.net/';
var baseUrl = 'https://themeforest.net/category/site-templates/creative?page=';
var currentPage = 1;
var countPage = 60; // 抓取网页总页数
//延时
var itemCount = 0;
var itemLoad = 0;function getPageList(page) {if (page > countPage) {console.log('所有数据加载完毕!');process.exit(0);}console.log(`当前加载第 ${page} 页数据`);request(baseUrl + page, function(err, response, body) {if (!err && response.statusCode == 200) {analysisPage(body);} else {console.log('get page error url => ' + baseUrl + page, err);}});
}
getPageList(currentPage);function analysisPage(body) {var items;var url;var $ = cheerio.load(body);// 抽出列表 liitems = $('.js-google-analytics__list-event-container');itemCount = items.length;items.map(function(i, item) {item = $(item);var linkA = item.find('.js-google-analytics__list-event-trigger.t-link');var text = linkA.text();var url = linkA.attr('href');var img = item.find('.landscape-image-magnifier').attr('data-preview-url');saveFile(urlPrefix + url,text,img);});
}function saveFile(url, text, img) {var theme = new ThemeModel({url: url,text: text,img: img});theme.save(function(err) {if (err) {console.log('save mongoose err! ');} else {itemLoad++;if (itemLoad === itemCount) {// 已保存完数据清空当前加载数itemLoad = 0;getPageList(++currentPage);}}});
}

package.json

{"name": "theme","version": "1.0.0","description": "","main": "index.js","scripts": {"test": "echo \"Error: no test specified\" && exit 1"},"keywords": [],"author": "","license": "ISC","dependencies": {"cheerio": "^0.22.0","mongoose": "^4.7.0","request": "^2.79.0"}
}

更新一个前端查看页面:

var express = require('express');
var app = express();
var mongoose = require('mongoose');
var Schema = mongoose.Schema;var Theme = new Schema({text: String,url: String,img: String
});
var ThemeModel = mongoose.model('Themes', Theme);
var html = `
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>themes</title>
</head>
<body>
%{body}
</body>
</html>
`;mongoose.connect('mongodb://localhost/theme');
app.get('/', function(req, res) {var body = '<div>';var responseText = '';res.set('Content-Type', 'text/html');ThemeModel.find({}, function(err, items) {items.map(function(item, i) {body += [`<img src="${item.img}" />`,`<p><a href="${item.url}" target="_blank">${item.text}</a></p>`].join('');});body += '</div>';responseText = html.replace('%{body}', body);res.send(responseText);});
});var server = app.listen(3000, function() {var host = server.address().address;var port = server.address().port;console.log('Example app listening at http://%s:%s', host, port);
});

转载于:https://my.oschina.net/itudou/blog/793313

nodejs抓取https://themeforest.net网页相关推荐

  1. 使用fiddler抓取HTTPS协议数据与疑难杂症终极解决方案

    作者:韦玮 转载请注明出处 常规设置: Fiddler默认只能抓取HTTP协议的网页,不能抓取HTTPS协议的网页,而我们很多时候,都需要抓HTTPS协议的网页,比如抓淘宝数据等.今天,韦玮老师会为大 ...

  2. python request url 转义_Python多线程抓取Google搜索链接网页

    1)urllib2+BeautifulSoup抓取Goolge搜索链接 近期,参与的项目需要对Google搜索结果进行处理,之前学习了Python处理网页相关的工具.实际应用中,使用了urllib2和 ...

  3. android 监听本机网络请求_fiddler如何抓取https请求实现fiddler手机抓包-证书安装失败100%解决...

    一.HTTP协议和HTTPS协议. (1) HTTPS协议=HTTP协议+SSL协议,默认端口:443 (2) HTTP协议(HyperText Transfer Protocol):超文本传输协议. ...

  4. Fiddler抓包工具入门:软件测试员必知的抓取https协议的方法

    首先给大家分享一个抓包的小故事: 小T在测试APP时,打开某个页面展示异常,于是就跑到客户端开发小A那里说:"你这个页面做的有问题,页面展示异常": 小A说:"这哪是我的 ...

  5. Fiddler抓取https数据报文,Fiddler数字证书解决方案

    前言: 一.浅谈HTTPS 我们都知道HTTP并非是安全传输,在HTTPS基础上使用SSL协议进行加密构成的HTTPS协议是相对安全的.目前越来越多的企业选择使用HTTPS协议与用户进行通信,如百度. ...

  6. 模拟器抓取https方法

    说明:为了解决安卓手线上不能抓取https请求,以下整理通过模拟器抓取https请求方法如下: 前置条件: 安卓模拟器1.夜神 抓包工具:fiddler.charles 不要安装证书 第一步安装模拟器 ...

  7. 如何用fiddler抓取HTTPS的详细教程(附fiddler安装教学)

    对于想抓取HTTPS的测试初学者来说,常用的工具就是fiddler,可是在初学时,大家对于fiddler如何抓取HTTPS真是伤了脑筋,可能你一步步按着网上的帖子成功了,那当然是极好的,有可能没有成功 ...

  8. 抓取一个连续的网页_搞懂各大搜索引擎蜘蛛的抓取规则,快速获得排名!

    搜索引擎平台的抓取规则: 百度.360.搜狗等搜索引擎抓取规则对比! 蜘蛛抓取规则:深度优先和广度优先 深度优先: 深度优先策略即一条道走到黑,当沿着一个路径走到无路可走时,再返回来走另一条路. 深度 ...

  9. Fiddler抓取https的设置

    在抓取https的设置中,出现了The root certificate could not be located; 需要下载并安装证书生成器,勾选Capture HTTPS traffic. 转载于 ...

  10. 【转载】在服务器上用Fiddler抓取HTTPS流量

    转载地址:https://yoursunny.cn/t/2011/FiddlerHTTPS/ 在服务器上用Fiddler抓取HTTPS流量 开发互联网应用的过程中,常常会设立或利用网络接口.为了调试对 ...

最新文章

  1. android重启软件用不了,应用程序重启而不是重启
  2. python的闭包函数
  3. 【Python】简单的最优算法函数创建
  4. java io流大全_Java IO流系统整理
  5. Java多线程知识小抄集(二)
  6. 数学--数论--POJ 1061青蛙的约会 (扩展欧几里得算法)
  7. Visual Studio/SQL Server系统开发常见问题归纳
  8. Python 辨异 —— __init__ 与 __new__
  9. 惊现飞鸽传书2009
  10. oracle数据库匿名快,pl/sql分匿名块和命名块
  11. Qt4_实现自定义委托
  12. NYOJ-57 6174问题
  13. Atitit  J2EE平台相关规范--39个  3.J2SE平台相关规范--42个
  14. LINQ Enumerable 续 II
  15. JWT、OAuth 2.0、session 用户授权实战
  16. php 源代码 即时通讯,php开源免费即时通讯源码-目前有哪些完全的开源的PHP,商城代码...
  17. springboot无法打开 jsp 页面变成下载解决办法
  18. 卖高价的洋水果是个好榜样
  19. 戴尔将为奔驰多款车型设计专业的车载智能系统
  20. 最新版 Let’s Encrypt免费证书申请步骤,保姆级教程

热门文章

  1. 基于Github Actions + Docker + Git 的DevOps方案实践教程
  2. Qt模仿360系统托盘
  3. 微服务: 立志做个伟大的项目
  4. 前端 js 深浅拷贝
  5. 收集UE4 优化Tips
  6. 实现注册功能添加邮箱激活验证
  7. 【提供代码获取方式】matlab使用风羽法画大气环流
  8. RenderingNG中关键数据结构和它们的角色
  9. 根据url 参数,页面显示不同背景图片
  10. JS格式化输出常用格式