jquery抓取网页内容(编写爬虫程序变的可能,实习操作起来非常的简单)
优采云 发布时间: 2022-04-06 12:14jquery抓取网页内容(编写爬虫程序变的可能,实习操作起来非常的简单)
编写爬虫程序大多是后端开发者的工作,但是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的网页模块,模拟浏览器端抓取网页数据,生成网页截图。具体用法后面会介绍