抓包流程分析

发布于 2025-02-16 02:52:27 字数 1610 浏览 9 评论 0

对于爬虫我们首先想到的是 python,但是对于前端来说我们通常是 node 来写爬虫,去抓取网站的数据而已。

爬虫的基本流程

在这里插入图片描述

1、发起请求
使用 http 库向目标站点发起请求,即发送一个 Request,第三方请求库如 request,axios 等。
Request 包含:请求头、请求体等

2、获取响应内容
如果服务器能正常响应,则会得到一个 Response
Response 包含:html,json,图片,视频等

3、解析内容
解析 html 数据:正则表达式,第三方解析库如 cheerio,PhantomJS,JSDom.等
解析 json 数据:json 模块
解析二进制数据:以 buffer 的方式写入文件。

4 、保存数据

数据库

接下来以爬去腾讯网文章数据为例,首先要知道网站的请求地址是 https://www.qq.com/,根据这个地址我们发送一个请求,得到网站的源代码:

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))
})

提取部分有用的内容之后,通常是保存到数据库中,或者写入到文件系统中。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

知你几分

暂无简介

文章
评论
27 人气
更多

推荐作者

櫻之舞

文章 0 评论 0

弥枳

文章 0 评论 0

m2429

文章 0 评论 0

野却迷人

文章 0 评论 0

我怀念的。

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文