java爬虫抓取动态网页(爬虫原理就是向目标URL发送请求然后把响应解析成我们想要的)
优采云 发布时间: 2022-03-03 05:21java爬虫抓取动态网页(爬虫原理就是向目标URL发送请求然后把响应解析成我们想要的)
说到爬虫,它并没有你想象的那么复杂。原理是向目标 URL 发送请求,然后将响应解析为我们想要的数据格式。如果涉及到Token认证,那就更复杂了。这次只讲解最简单的入门级静态爬虫。.
在node.js中实现爬虫推荐两个库request和cheerio
npm install request
npm install cheerio
request 用于发送请求;Cheerio 是对 jquery 核心功能的快速、简洁、灵活的实现,可以直接对请求请求返回的页面 html 进行 jquery 风格的 DOM 操作。
(一)dom 爬取
以下是爬虫的最简单示例。我们爬取了我在简书首页的用户名。
打开要爬取的页面,找到用户名的dom节点
按照jquery选择器的写法,应该是$('.main-top>.title>a').text()
附代码
const request = require('request')
const cheerio = require('cheerio')
request('https://www.jianshu.com/u/5b23cf5114a1', (err, res) => {
if (err) {
console.log(err.code)
}
else {
let $ = cheerio.load(res.body)
console.log($('.main-top>.title>a').text())
}
})
(二)列表爬取
如果要爬一个列表,比如我的短书Blog列表,怎么做?同理,使用jquery的each方法,会遍历选择器中匹配的dom。按照同样的步骤先找到dom节点,然后解析。
附上参考代码
const request = require('request')
const cheerio = require('cheerio')
request('https://www.jianshu.com/u/5b23cf5114a1', (err, res) => {
if (err) {
console.log(err.code)
}
else {
let $ = cheerio.load(res.body)
let data = []
$('.note-list>li').each(function (i) {
data.push($(this).find('.title').text());
});
console.log(data)
}
})
静态爬虫到此结束,动态网页的爬取将在后面讲解。