网页数据抓取怎么写( 前端来说的基本流程和流程是什么?-lite模块解析)
优采云 发布时间: 2022-01-28 12:04网页数据抓取怎么写(
前端来说的基本流程和流程是什么?-lite模块解析)
对于爬虫,我们首先想到的是python,但是对于前端,我们通常使用node来编写爬虫,抓取网站的数据。
爬虫的基本流程:
1、发起请求:
使用http库向目标站点发起请求,即发送Request,第三方请求库如request、axios等
请求收录:请求头、请求体等
2、获取响应内容:
如果服务器能正常响应,就会得到一个Response。
响应收录:html、json、图片、视频等
3、解析内容:
解析html数据:正则表达式、cheerio、PhantomJS、JSDom等第三方解析库
解析json数据:json模块。
解析二进制数据:以缓冲模式写入文件。
4、保存数据
数据库。
接下来以腾讯网文章数据的爬取为例。首先我们要知道网站的请求地址是。根据这个地址,我们发送请求获取网站的源码:
const request = require('request');
const url = 'https://www.qq.com/'
const fs = require('fs')
const cheerio = require('cheerio')
const iconv = require('iconv-lite')
request({url, encoding: null}, (err, response, body) => {
let result = iconv.decode(body, 'gb2312');
console.log(result)
})
在获取网站源码的过程中,我们发现网站不是utf8编码格式,而是gb2312格式,所以我们使用iconv-lite模块来解析。
得到响应的内容后,我们需要提取html中的内容,这次我要抓取网站的新闻标题部分。
const request = require('request')
const url = 'https://www.qq.com/'
const fs = require('fs')
const cheerio = require('cheerio')
const iconv = require('iconv-lite')
request({url, encoding: null}, (err, response, body) => {
let result = iconv.decode(body, 'gb2312');
let list = []
let $ = cheerio.load(result)
$('.yw-list li').each((i, ele) => {
let text = $(ele).text().replace(/\s/g, '')
list.push(text)
})
console.log(list)
fs.writeFileSync('qq.json', JSON.stringify(list))
})
提取一些有用的内容后,通常会保存到数据库或写入文件系统。