jquery抓取网页内容(编写爬虫程序变的可能,实习操作起来非常的简单)

优采云 发布时间: 2022-04-06 12:14

  jquery抓取网页内容(编写爬虫程序变的可能,实习操作起来非常的简单)

  编写爬虫程序大多是后端开发者的工作,但是node的出现使得前端开发者编写爬虫程序成为可能,而且做法非常简单。

  我们首先介绍 SuperAgent,这是一个小型渐进式客户端 HTTP 请求库,其 API 与 Node.js 模块相同,具有许多高级 HTTP 客户端功能。从这个官方的解释可以看出,SuperAgent是一个实现http请求的库,封装在node环境中,实现对网页内容的请求。

  Cheerio 是在node 环境下,可以使用jquery api 之类的方法来获取网页的dom 中的数据。

  这两个工具结合起来抓取特定于业务的内容。我们都知道,在前端网页的开发中,经常会为样式相同的dom节点打上相同的类名,这样它们就可以具有相同的样式,这样就可以为我们在网页中抓取特定内容提供方便了。网页 。

  我们以某网站的消息为例:

  

  上图是新闻列表对应的代码。我们可以看到列表被包装在一个 id="xy-impcon" 的 div 容器中。每个分类的新闻列表使用ul,ul有一个通用的类名list-a。下面 ul 都有 li 标签和 a 标签。如果我们要获取每条新闻,可以使用cheerio来获取dom,可以写成$('#xy-impcon ul.list-a li a'),那么就写爬取链接和标题的程序,并将抓取数据保存到文件。

  var http = require("http"),

url = require("url"),

superagent = require("superagent"),

cheerio = require("cheerio"),

async = require("async"),

eventproxy = require('eventproxy');

var path = require('path');

var $ = require('jQuery');

var fs = require("fs");

var writerStream2 = fs.createWriteStream(path.resolve(__dirname,'../data/news.txt'),{ flags: 'w',encoding: null,mode: 0666 });

var text = [];

(function (){

superagent.get('爬取网站的url')

.end(function(err,pres){

var $ = cheerio.load(pres.text);

var curPageUrls = $('#xy-impcon ul.list-a li a');

console.log(curPageUrls.length)

curPageUrls.each(function(index, elem){

text.push({

title: $(elem).text(),

url: $(elem).attr('href')

})

})

writerStream2.write(JSON.stringify(text),'UTF8');

});

})();

  上面的代码将爬取的内容保存为文件。

  另外,我们还可以在node环境中使用phantomjs的网页模块,模拟浏览器端抓取网页数据,生成网页截图。具体用法后面会介绍

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线