网站首页 > 技术文章 正文
一、引言
最近娱乐圈比较的火的算是郑爽事件了,作为一名程序猿如何能或者最新的娱乐热点新闻呢? 今天咱们就用js做一个网络爬虫,来爬取一个网站的新闻数据。
二、什么是爬虫?
网络爬虫,又称为网页蜘蛛,网络机器人,意思是我们通过程序去搜集网络上某些网站的数据。典型的通过爬虫获取数据的网站,比如百度、谷歌等搜索引擎。还有一些新闻聚合类网站,比如今日头条等网站。之前淘宝的一淘,返利网等网站都是利用了爬虫技术去获取别人网站的一些信息。 爬虫也不能乱用,无限制的去爬取一个网站的信息,那样会导致人家公司服务器压力比较大。之前有句爬虫界比较流行的话:爬虫玩的好,监狱进的早;数据玩的溜,牢饭吃个够!做技术的要有自己的底线,之前有程序员用爬虫为公司做了一些工作,结果公司被诉讼,程序猿被带走!
三、开始之前
为了防止出一些意外,首先我们可以访问你要爬取的目标网站的robots协议。 robots协议也叫robots.txt(统一小写)是一种存放于网站根目录下的ASCII编码的文本文件,它通常告诉网络爬虫:此网站中的哪些内容是不应被爬虫获取的,哪些是可以被爬虫获取的。参考robots.txt去爬取数据,再设置一下间歇时间,不会有人在意的。
首先看一下我们今天要爬取网站的
https://bbs.hupu.com
红色部分是关键,所有的网页都不能被爬取!!有句话不知当讲不当讲!
冷静下来,文章还没写就要结束了吗?我的kpi咋办!!!
看看我们的今天要爬取的网页地址,我们今天要爬取的网页后缀名不是html!!!
不知道是不是网站的技术人员忽略了这样的地址,哈哈哈。
四、正式开始
我们使用nodejs做爬虫,要使用到两个npm包,cheerio 和 axios
首先按照nodej,然后安装axios和cheerio 。
五、安装axios
axios是一个可以发起请求从而获取网页内的包。
键盘上按win+r
输入cmd 就打开了终端
终端中输入
npm i aixos
就可以安装axios
六、安装cheerio
安装cheerio cheerio 是一的用法跟jQuery的用法差不多。 就是先将页面的数据load进来形成一个特定的数据格式,然后通过类似jq的语法,对数据进行解析处理。 终端中输入
npm i cheerio
七、爬取数据
新建sp.js文件,写入如下代码
// 引入包
const axios = require('axios')
const cheerio = require('cheerio')
// 要爬取页面的地址
let url ='https://bbs.hupu.com/4856'
// 请求页面数据
axios.get(url).then(res=>{
// res.data 就是页面的数据
console.log(res.data);
// 将页面数据转为$对象
let $ = cheerio.load(res.data);
})
执行node sp.js 命令
网页的数据已经获取到了,然后我们就可以使用jquery的语法获取页面中的数据了。 下面我们分析一下页面的结构
可以看到页面中所有的新闻标题都在a标签中,类名是truetit。然后我们就可以使用jq的选择器获取页面中所有类名为truetit的元素。
// 引入包
const axios = require('axios')
const cheerio = require('cheerio')
// 要爬取页面的地址
let url ='https://bbs.hupu.com/4856'
// 请求页面数据
axios.get(url).then(res=>{
// res.data 就是页面的数据
// console.log(res.data);
// 将页面数据转为$对象
let $ = cheerio.load(res.data);
let arr = []
// 将a标签的数据放到数组中
$('.truetit').each(function(i,v){
arr.push($(v).text())
})
console.log(arr);
})
终端中结果
这样每次执行就可以获取最新的娱乐新闻,不需要打开网页就可以获取到,当然我们只是获取了第一页的数据,你也可以获取第二页、第三页等其他页面的数据。 我们现在相当于只获取了一个网站的娱乐数据,如果你再分析一些其他的网站,获取一些其他的网站的数据,然后把数据都存储起来,自己就可以做一个只显示娱乐新闻的网站了!
猜你喜欢
- 2024-09-11 浅析MySQL Join Reorder算法(mysqlinner join)
- 2024-09-11 js 小函数(js函数总结)
- 2024-09-11 Kubernetes 高性能网络组件 Calico 入门教程
- 2024-09-11 jQuery中的clone妙用(jquery.on)
- 2024-09-11 自定义一个"骚气"的jQuery
- 2024-09-11 前端单元测试以及自动化构建入门(前端单元测试是什么)
- 2024-09-11 Python全栈 Web(jQuery 一条龙服务)
- 2024-09-11 jQuery遍历说、详解与示例的结合,轻松搞定这个遍历!
- 2024-09-11 「clickhouse专栏」对标mongodb存储类JSON数据文档统计分析
- 2024-09-11 jQuery实现简易购物车功能(jquery购物车结算页面)
- 最近发表
- 标签列表
-
- cmd/c (57)
- c++中::是什么意思 (57)
- sqlset (59)
- ps可以打开pdf格式吗 (58)
- phprequire_once (61)
- localstorage.removeitem (74)
- routermode (59)
- vector线程安全吗 (70)
- & (66)
- java (73)
- org.redisson (64)
- log.warn (60)
- cannotinstantiatethetype (62)
- js数组插入 (83)
- resttemplateokhttp (59)
- gormwherein (64)
- linux删除一个文件夹 (65)
- mac安装java (72)
- reader.onload (61)
- outofmemoryerror是什么意思 (64)
- flask文件上传 (63)
- eacces (67)
- 查看mysql是否启动 (70)
- java是值传递还是引用传递 (58)
- 无效的列索引 (74)