nodejs抓取页面内容,并分析有无某些内容的js文件

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‘);

上面的代码大家应该都能看的懂!这里只是一个实验性的一些代码,具体的还要大家自己去研究研究!

时间: 2024-08-02 00:03:14

nodejs抓取页面内容,并分析有无某些内容的js文件的相关文章

用PHP抓取页面并分析

在做抓取前,记得把php.ini中的max_execution_time设置的大点,不然会报错的. 一.用Snoopy.class.php抓取页面 一个挺萌的类名.功能也很强大,用来模拟浏览器的功能,可以获取网页内容,发送表单等. 1)我现在要抓取一个网站的列表页的内容,我要抓取的是全国的医院信息内容,如下图: 2)我很自然的将URL地址复制下来,用Snoopy类来抓取前10页的页面内容,而且将内容放到本地来,在本地建立html文件,等下用于分析. $snoopy=new Snoopy(); /

curl只能抓取页面的部分内容的原因

核心提示:先列出 HessianPHP 的错误提示: CURL transport error: transfer closed with outstanding read data remaining 基础知识背景: 1)"Expect: 100-continue"的来龙去脉: HTTP/1.1 协议里设计100 (Continue) HTTP 状态码的的目的是,在客 ... 先列出 HessianPHP 的错误提示: CURL transport error: transfer c

python 爬虫抓取 MOOC 中国课程的讨论区内容

一:selenium 库 selenium 每次模拟浏览器打开页面,xpath 匹配需要抓取的内容.可以,但是特别慢,相当慢.作为一个对技术有追求的爬虫菜鸡,狂补了一些爬虫知识.甚至看了 scrapy 框架,惊呆了,真棒! 网上很多关于 selenium 库的详细介绍,这里略过此方法. 二: requests 库 编写一个爬虫小脚本,requests 库极为方便.接下来进入正题,如何抓取 MOOC 中国上课程的讨论内容! 1. 分析网页数据 打开你需要抓取数据的课程页面,点击讨论区之后页面加载讨

好用的 curl 抓取 页面的封装函数

由于经常使用php curl 抓取页面的内容,在此mark 平时自己封装的 curl函数,(其实 现在也开始用 Python 来爬了~ ^-^) /** * 封装curl方法 * @author FredGui * @param string $url 必选 接口地址 * @param string $post 可选 如果是post访问填写post参数数组 * @param int $timeout 可选 超时时间 * @param string $cookie * @param int $de

php抓取页面的几种方式

在做一些天气预报或者RSS订阅的程序时,往往 需要抓取非本地文件,一般情况下都是利用php模拟浏览器的访问,通过http请求访问url地址, 然后得到html源代码或者xml数据,得到数据我们不能直接输出,往往需要对内容进行提取,然后再进行格式化,以更加友好的方式显现出来. 下面简单说一下php抓取页面的几种方法及原理: 一. PHP抓取页面的主要方法: 1. file()函数 2. file_get_contents()函数 3. fopen()->fread()->fclose()模式 4

使用PHP的正则抓取页面中的网址

最近有一个任务,从页面中抓取页面中所有的链接,当然使用PHP正则表达式是最方便的办法.要写出正则表达式,就要先总结出模式,那么页面中的链接会有几种形式呢? 链接也就是超级链接,是从一个元素(文字.图片.视频等)链接到另一个元素(文字.图片.视频等).网页中的链接一般有三种,一种是绝对URL超链接,也就是一个页面的完整路径:另一种是相对URL超链接,一般都链接到同一网站的其他页面:还有一种是页面内的超链接,这种一般链接到同一页面内的其他位置. 搞清楚了链接的种类,就知道要抓链接,主要还是绝对URL

CURL抓取页面

cURL的基本原理 curl是利用URL语法在命令行方式下工作的开源文件传输工具,他能够从互联网上获得各种各样的网络资源.简单来说,curl就是抓取页面的升级版. 1 2 3 4 5 6 7 8 9 10 11 12 <?php  //1.初始化,创建一个新cURL资源  $ch = curl_init(); //2.设置URL和相应的选项  curl_setopt($ch, CURLOPT_URL, "http://www.baidu.com/");   curl_setopt

Python抓取页面乱码问题的解决

import urllib2 response=urllib2.urlopen('http://house.focus.cn/') html=response.read() print html.decode('gbk') Python抓取页面乱码问题的解决,布布扣,bubuko.com

beautifulsoup学习-抓取页面并解析

以汽车之家为例子,抓取页面并进行解析 # -*- coding=utf-8 -*- import urllib2 from BeautifulSoup import BeautifulSoup as bs3 import json import codecs #字符检测,用来检测其真实的编码格式 import chardet #save content to file def save_to_file(filename, content): f = open(filename, 'w+') as