美文网首页
第五章 爬虫

第五章 爬虫

作者: 扶光_ | 来源:发表于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模块

    相关文章

      网友评论

          本文标题:第五章 爬虫

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