最近公司安排给我一个任务,抓取页面数据;http://survey.finance.sina.com.cn/static/20205/20131120.html?pid=20205&dpc=1,身为一个前端,还没搞过后台的东西,硬着头皮接下之后,就到网上各种找方法了。最终找到一个nodejs的方法,经过实践之后,觉得非常好用,所以分享给大家。此教程从0开始 ,适用于从来还没接触过nodejs的童鞋!
1.先下载 nodejs,这个不多说,然后双击安装文件安装。下载地址:http://www.nodejs.org/download/
2.安装完成后,直接打开cmd,键入 node -v,输出node版本号,再输入npm -v,输出npm版本号 ,说明安装成功,继续下一步;
3.键入npm install express -g,意思是安装express服务器到全局,作用是后面可以创建项目;
4.键入npm install jade -g,安装jade模块;
5.键入npm install cheerio -g,安装cheerio模块,用来解析html非常方便,就像在浏览器中使用jquery一样,可以理解为这是一套规则的模块。
6.继续键入express -V(此处是大写,因为新版本才能识别),如果成功 会提示express的版本号,如果失败,提示“express不是内部命令”,就需要再键入命令npm install express-generator -g;
7.再次输入express -V,就会显示正常了,另外,输入node list可以查看自己安装了哪些模块。;
8.然后输入express myapp;作用是创建自己的项目,名为myapp,路径是c/用户/xxx/myapp;实在不行就在计算机搜索myapp也行。
9.然后就可以在项目里加js文件了,新建一个load.js文件,同时在目录下新建一个number.txt的文件,代码中会用到;
10.里面的内容为:

var http = require("http");

// Utility function that downloads a URL and invokes
// callback with the data.
function download(url, callback) {
http.get(url, function(res) {
var data = "";
res.on('data', function (chunk) {
data += chunk;
});
res.on("end", function() {
callback(data);
});
}).on("error", function() {
callback(null);
});
} var cheerio = require("cheerio");
var fs =require('fs'); var url = "http://survey.finance.sina.com.cn/static/20205/20131120.html?pid=20205&dpc=1";
download(url, function(data) {
if (data) {
//console.log(data);
var $ = cheerio.load(data);
var total =$(".fred").text();
fs.appendFile('./number.txt',total,'utf-8',function(err){
if(err) {throw err;}
});
var numArrs=$("div[class='d d-num']").text();
numArrs =numArrs.replace(/,/g,'');//把所有的逗号变为空(数字中间的逗号)
numArrs =numArrs.replace(/\s+/g, ',');//把所有的空字符串变为一个逗号(数字与数字之间变为逗号)
numArrs =numArrs.replace(/,$/gi, '');//去除最后一个逗号
fs.appendFile('./number.txt',numArrs,'utf-8',function(err){
if(err) {throw err;}
});
console.log("done");
}
else console.log("error");
});

11.然后进入cmd,输入cd myapp,进入myapp目录,然后输入命令node load.js,执行js文件,然后就可以打开number.txt文件看到,里面就有你想要的数据了,如下图所示。

执行效果:

文件效果:
到这里,简单的抓取数据就结束了。当然还可以进行扩展,比如写循环,日期变换,可以获取更多不同页面的数据。

nodejs--实现跨域抓取数据的更多相关文章

  1. jquery+thinkphp实现跨域抓取数据的方法

    jquery的$.post发送数据到服务器后台,在由后台的PHP代码执行远程抓取,存到数据库ajax返回数据到前台,前台用JS接受数据并显示. //远程抓取获取数据$("#update_ac ...

  2. nodejs抓取数据一(列表抓取)

    纯属初学...有很多需要改进的地方,请多多指点... 目标是抓取58同城 这个大分类下的列表数据: http://cd.58.com/caishui/?PGTID=14397169455980.924 ...

  3. 基于Thinkphp5+phpQuery 网络爬虫抓取数据接口,统一输出接口数据api

    TP5_Splider 一个基于Thinkphp5+phpQuery 网络爬虫抓取数据接口 统一输出接口数据api.适合正在学习Vue,AngularJs框架学习 开发demo,需要接口并保证接口不跨 ...

  4. PHP的cURL库:抓取网页,POST数据及其他,HTTP认证 抓取数据

    From : http://developer.51cto.com/art/200904/121739.htm 下面是一个小例程: ﹤?php// 初始化一个 cURL 对象$curl = curl_ ...

  5. 分布式爬虫:使用Scrapy抓取数据

    分布式爬虫:使用Scrapy抓取数据 Scrapy是Python开发的一个快速,高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据.Scrapy用途广泛,可以用于数据挖掘. ...

  6. NET 5 爬虫框架/抓取数据

    爬虫大家或多或少的都应该接触过的,爬虫有风险,抓数需谨慎.  爬虫有的是抓请求,有的是抓网页再解析 本着研究学习的目的,记录一下在 .NET Core 下抓取数据的实际案例.爬虫代码一般具有时效性,当 ...

  7. java抓取网页数据,登录之后抓取数据。

    最近做了一个从网络上抓取数据的一个小程序.主要关于信贷方面,收集的一些黑名单网站,从该网站上抓取到自己系统中. 也找了一些资料,觉得没有一个很好的,全面的例子.因此在这里做个笔记提醒自己. 首先需要一 ...

  8. C# WebBrowser控件 模拟登录 抓取数据

    参考博客:C#中的WebBrowser控件的使用 参考博客:C#中利用WebBrowser控件,获得HTML源码 一.问题点: 1.模拟登录后,如果带有嵌套的iframe嵌套,不好读取iframe内容 ...

  9. php中封装的curl函数(抓取数据)

    介绍一个封闭好的函数,封闭了curl函数的常用步骤,方便抓取数据. 代码如下: <?php /** * 封闭好的 curl函数 * 用途:抓取数据 * edit by www.jbxue.com ...

随机推荐

  1. SQL*Loader之CASE1

    最近项目涉及到将文本文件中的数据导入到Oracle数据库中,故研究了下SQL*Loader,官档提供的资料不是很丰富,很多案例中出现的语句在官档中找不到出处.但它提供的案例本身却彰显出了SQL*Loa ...

  2. UNIX/Linux打包,压缩 ,解压:

    1.tar打包命令 ①tar cvf tarname.tar file1 file2 $ .log $ .log $ .log $ tar cvf alllog.tar *.log a .log 0K ...

  3. Testing - 测试基础 - 探索

    定义 探索性测试(Exploratory Testing)是一种自由的软件测试风格,强调测试人员同时展开测试学习,测试设计,测试执行和测试结果评估等活动,以持续优化测试工作. 其特征有:即兴发挥,快速 ...

  4. 分享本年度最佳的15个 Photoshop 实例教程

    毫无疑问,Photoshop 是任何其类型的设计相关工作的最佳工具.有这么多东西,你可以用它来设计,发挥你的想象力,一切皆有可能. 现在,几乎所有的封面图像都会用 Photoshop 来修饰. 您可能 ...

  5. Ionic2学习笔记(0):HelloWorld

    作者:Grey 原文地址:http://www.cnblogs.com/greyzeng/p/5529153.html 操作系统: Windows 10 环境配置: Node.js Java SE D ...

  6. 这些HTML、CSS知识点,面试和平时开发都需要 No10-No11

    系列知识点汇总 1.基础篇 这些HTML.CSS知识点,面试和平时开发都需要 No1-No4(知识点:HTML.CSS.盒子模型.内容布局) 这些HTML.CSS知识点,面试和平时开发都需要 No5- ...

  7. Qt实现小功能之列表无限加载

    概念介绍 无限加载与瀑布流的结合在Web前端开发中的效果非常新颖,对于网页内容具备较好的表现形式.无限加载并没有一次性将内容全部加载进来,而是通过监听滚动条事件来刷新内容的.当用户往下拖动滚动条或使用 ...

  8. 暴力枚举 + 24点 --- hnu : Cracking the Safe

    Cracking the Safe Time Limit: 1000ms, Special Time Limit:2500ms, Memory Limit:65536KB Total submit u ...

  9. [Asp.net]通过uploadify将文件上传到B服务器的共享文件夹中

    写在前面 客户有这样的一个需求,针对项目中文档共享的模块,客户提出如果用户上传特别的大,或者时间久了硬盘空间就会吃满,能不能将这些文件上传到其他的服务器?然后就稍微研究了下这方面的东西,上传到网络中的 ...

  10. Autofac - 组件

    快到年终了, 最近项目比较悠闲, 就想总结下, 项目中所使用到的一些技术, 以及使用方法. 之前有写过Dapper以及Dapper的一个扩展, 这些也是项目中使用过的. 算是一个温故而知新吧. 代码: ...