美文网首页
第五章 爬虫

第五章 爬虫

作者: 扶光_ | 来源:发表于2022-08-03 11:21 被阅读0次

爬虫是指使用代码模拟用户批量发送网络请求,批量获取数据的行为。

axios,是一个基于promise的网络请求库,作用于node.js和浏览器中,它是 isomorphic 的(即同一套代码可以运行在浏览器和node.js中)。在服务端它使用原生node.js http模块, 而在客户端 (浏览端) 则使用XMLHttpRequest。
首先在html中先引入axios
在这个网址https://www.bootcdn.cn/axios/中复制下标签

Ajax 即“Asynchronous Javascript And XML”(异步 JavaScript 和 XML),是指⼀种创建交互式⽹⻚应⽤的⽹⻚开发技术。
Ajax 是⼀种⽤于创建快速动态⽹⻚的技术。
Ajax 是⼀种在⽆需重新加载整个⽹⻚的情况下,能够更新部分⽹⻚的技术。
通过在后台与服务器进⾏少量数据交换,Ajax 可以使⽹⻚实现异步更新。这意味着可以在不重新加载整个⽹⻚的情况下,对⽹⻚的某部分进⾏更新。
传统的⽹⻚(不使⽤ Ajax)如果需要更新内容,必须重载整个⽹⻚⻚⾯。

一,在前端页面借助axios请求ajax

<script>
        //借助axios发送ajax请求
        axios({
            //请求方式
            method:"get",
            //请求地址
            url:"../01/file1/msg.txt",

            //发送数据
            //post发送数据
            data:{x:1,y:2},

            //get发送数据
            params:{x:1,y:2}

        }).then((res)=>{
            console.log("成功的回调函数");
            console.log(res);
        }).catch(err=>{
            console.log(err);//失败的回调函数
        })
    </script>

打开网页我们会得到这样的一个数据


image.png

那么我们最终需要拿到后端给我们的数据,可以写成

 console.log(res.data);

二,后端使用axios

第一步安装axios包

    cnpm i axios -S

在后端使用axios和前端基本相似,只不过后端的地址必须是一个端口,而不是相对路径,拿百度的网址为例,我们访问百度,要得到百度中的数据。

const axios = require("axios")
axios({
    method:"get",

    url:"https://www.baidu.com/",

}).then(res=>{
    console.log(res.data);
}).catch(err=>{
    console.log(err);
})

要知道百度的地址有这么多


百度数据

而我们用axios访问得到的数据只是这么一点..那这是为什么呢


image.png
如果通过后端去向http的这种地址发送请求的时候,他们后端会检测你当前的环境是不是一个浏览器环境,如果你不是一个正常使用浏览器环境,他只会给你返回一个简单的一段数据。

那么怎么样我们才能让我们的后端环境变成和浏览器环境一样呢,然后访问到所有的数据,这也就是爬虫的原理

我们后端发送请求需要伪装成浏览器环境请求

2.1伪装浏览器请求环境

利用请求头来进行伪装

axios({
    method:"get",

    url:"https://www.baidu.com/",

    //请求头
    headers:{
        //伪装浏览器   后面这一串就是浏览器的版本信息
        "user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 
(KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36",
    }

如此就访问到了所有数据


三,举例爬小说

爬虫 一定要分析当前网页结构

首先将我们想要爬的网站地址放在请求的url上


image.png

那么这样肯定是不行的,我们需要处理,将字符串当成一个html文档来处理更加便捷

html
通过便签来拿到里面的数据,但node没有解析html标签的能力
所有我们需要一个包来进行完成,也就是虚拟DOM
npm中常见的虚拟DOM有两种
1原生js操作的jsdom
2jq操作的cheerio

下面又jq操作 首先安装cheerio
npm i cheerio -S
其次在引入require("cheerio")

找主体内容
then(({data})=>{
    const $ = cheerio.load(data);
    let txt = $(".ywskythunderfont").text()
    console.log(txt);
})
拿到小说

最后我们将小说保存在一个文件夹中,需要用到fs模块

相关文章

  • 第五章 爬虫

    爬虫是指使用代码模拟用户批量发送网络请求,批量获取数据的行为。 axios,是一个基于promise的网络请求库,...

  • 11.20-11.26

    本周目标 爬虫 爬虫 爬虫 爬虫

  • 爬虫入门基础

    Day01 一、爬虫介绍 什么是爬虫 Python爬虫的优势 Python爬虫需要掌握什么 爬虫与反爬虫与反反爬虫...

  • 01-认识爬虫

    一、爬虫介绍 什么是爬虫 Python爬虫的优势 Python爬虫需要掌握什么 爬虫与反爬虫与反反爬虫三角之争 网...

  • 爬虫原理与数据抓取之一: 通用爬虫和聚焦爬虫

    通用爬虫和聚焦爬虫 根据使用场景,网络爬虫可分为 通用爬虫 和 聚焦爬虫 两种. 通用爬虫 通用网络爬虫 是 捜索...

  • (了解)通用爬虫和聚焦爬虫--爬虫基础教程(python)(二)

    通用爬虫和聚焦爬虫 根据使用场景,网络爬虫可分为 通用爬虫 和 聚焦爬虫 两种.我们主要写通用爬虫。 通用爬虫 通...

  • Python 网络爬虫(一)

    网络爬虫的基本介绍 学习爬虫,我想主要从以下几个方面来切入 -爬虫的原理? -爬虫的作用? -爬虫的实现? -爬虫...

  • 7.爬虫概述

    爬虫概述 知识点: 了解 爬虫的概念 了解 爬虫的作用 了解 爬虫的分类 掌握 爬虫的流程 1. 爬虫的概念 模拟...

  • 1-基本概念

    简介 为什么选择Python做爬虫 需要技能 爬虫与反爬虫 网络爬虫类型 通用网络爬虫 聚焦网络爬虫 增量式网络爬...

  • 《岳响河》目录 第五章

    第五章1 第五章2 第五章3 第五章4 第五章5 第五章6 第五章7 第五章8 第五章9 第五章10 第五章11 ...

网友评论

      本文标题:第五章 爬虫

      本文链接:https://www.haomeiwen.com/subject/gijswrtx.html