文章自动采集(网络爬虫系统的分类及分类介绍-苏州安网络 )

优采云 发布时间: 2022-01-14 13:16

  文章自动采集(网络爬虫系统的分类及分类介绍-苏州安网络

)

  前言#

  网络爬虫(也称为网络蜘蛛、网络机器人,或者在 FOAF 社区中更常称为网络追踪器)是一种程序或脚本,它根据某些规则自动从万维网上爬取信息。其他不太常用的名称是 ant、autoindex、emulator 或 worm。

  我们可以利用网络爬虫自动采集数据信息,如搜索引擎中的站点收录爬取,数据采集的数据分析挖掘,金融数据的应用采集此外,网络爬虫还可用于舆情监测分析、目标*敏*感*词*采集等各个领域。

  1、网络爬虫分类#

  网络爬虫根据系统结构和实现技术大致可以分为以下几种:通用网络爬虫、聚焦网络爬虫、增量网络爬虫、深度网络爬虫(Deep Web Crawler)。实际的网络爬虫系统通常是通过几种爬虫技术的组合来实现的。下面简单介绍一下这几种爬虫。

  1.1、万能网络爬虫

  又称Scalable Web Crawler,爬取对象从一些*敏*感*词*URL扩展到整个Web,主要用于门户网站搜索引擎和大型Web服务提供商采集数据。

  1.2、关注网络爬虫

  也称为Topical Crawler,是指选择性地抓取与预定义主题相关的页面的网络爬虫。与一般的网络爬虫相比,专注爬虫只需要爬取主题相关的页面,大大节省了硬件和网络资源,而且由于页面少,保存的页面更新也很快。信息需求。

  1.3、增量网络爬虫

  指对下载的网页进行增量更新的爬虫,只爬取新生成或更改的网页。可以在一定程度上保证爬取的页面尽可能的新。.

  1.4、深网爬虫

  网页按存在方式可分为表层网页(Surface Web)和深层网页(Deep Web,又称隐形网页或隐藏网页)。表面网页是指可以被传统搜索引擎检索到的页面,以及主要由可以通过超链接到达的静态网页组成的网页。深网是那些大部分无法通过静态链接访问的网页,隐藏在搜索表单后面,只有提交一些 关键词 的用户才能访问。

  2、创建一个简单的爬虫应用#

  简单了解以上爬虫后,我们来实现一个简单的爬虫应用。

  2.1、实现目标

  说到爬虫,大概率会想到大数据,然后就会想到Python。百度之后,Python中的爬虫确实很多。由于我主要做前端开发,所以相对来说,JavaScript 更加熟练和简单。实现一个小目标,然后用NodeJS爬取首页文章k-code farmer列表(我常用的一个开发者网站),然后写入本地JSON文件。

  2.2、环境建设

  NodeJS安装完成后,打开命令行,使用node -v查看NodeJS是否安装成功。您可以使用 npm -v 来检查 NodeJS 是否安装成功。安装成功后,应打印以下信息(因版本而异):

  

  2.3、具体实现

  2.3.1、安装依赖

  在目录下执行 npm install superagentcheerio --save-dev 安装superagent和cheerio。创建一个 crawler.js 文件。

  Copy// 导入依赖包

const http = require("http");

const path = require("path");

const url = require("url");

const fs = require("fs");

const superagent = require("superagent");

const cheerio = require("cheerio");

  2.3.2、爬取数据

  然后获取请求页面,获取页面内容后,根据你想要的数据解析返回的DOM,最后将处理后的结果JSON转成字符串保存在本地。

  Copy//爬取页面地址

const pageUrl="https://www.cnblogs.com/";

// 解码字符串

function unescapeString(str){

if(!str){

return ''

}else{

return unescape(str.replace(/&#x/g,'%u').replace(/;/g,''));

}

}

// 抓取数据

function fetchData(){

console.log('爬取数据时间节点:',new Date());

superagent.get(pageUrl).end((error,response)=>{

// 页面文档数据

let content=response.text;

if(content){

console.log('获取数据成功');

}

// 定义一个空数组来接收数据

let result=[];

let $=cheerio.load(content);

let postList=$("#main #post_list .post_item");

postList.each((index,value)=>{

let titleLnk=$(value).find('a.titlelnk');

let itemFoot=$(value).find('.post_item_foot');

let title=titleLnk.html(); //标题

let href=titleLnk.attr('href'); //链接

let author=itemFoot.find('a.lightblue').html(); //作者

let headLogo=$(value).find('.post_item_summary a img').attr('src'); //头像

let summary=$(value).find('.post_item_summary').text(); //简介

let postedTime=itemFoot.text().split('发布于 ')[1].substr(0,16); //发布时间

let readNum=itemFoot.text().split('阅读')[1]; //阅读量

readNum=readNum.substr(1,readNum.length-1);

title=unescapeString(title);

href=unescapeString(href);

author=unescapeString(author);

headLogo=unescapeString(headLogo);

summary=unescapeString(summary);

postedTime=unescapeString(postedTime);

readNum=unescapeString(readNum);

result.push({

index,

title,

href,

author,

headLogo,

summary,

postedTime,

readNum

});

});

// 数组转换为字符串

result=JSON.stringify(result);

// 写入本地cnblogs.json文件中

fs.writeFile("cnblogs.json",result,"utf-8",(err)=>{

// *敏*感*词*错误,如正常输出,则打印null

if(!err){

console.log('写入数据成功');

}

});

});

}

fetchData();

  3、执行优化#

  3.1、生成结果

  在项目目录下打开命令行,输入node crawler.js,

  

  你会发现目录下会创建一个cnblogs.json文件,打开文件如下:

  

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线