iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > node.js >NodeJS制作爬虫全过程(续)
  • 208
分享到

NodeJS制作爬虫全过程(续)

爬虫全过程NodeJS 2022-06-04 17:06:07 208人浏览 八月长安
摘要

书接上回,我们需要修改程序以达到连续抓取40个页面的内容。也就是说我们需要输出每篇文章的标题、链接、第一条评论、评论用户和论坛积分。 如图所示,$('.reply_author').eq(0).text()

书接上回,我们需要修改程序以达到连续抓取40个页面的内容。也就是说我们需要输出每篇文章的标题、链接、第一条评论、评论用户和论坛积分。

如图所示,$('.reply_author').eq(0).text().trim();得到的值即为正确的第一条评论的用户。

{<1>}

查看图片

在eventproxy获取评论及用户名内容后,我们需要通过用户名跳到用户界面继续抓取该用户积分

var $ = cheerio.load(topichtml);

//此URL为下一步抓取目标URL

var userHref = 'https://cnodejs.org' + $('.reply_author').eq(0).attr('href');

userHref = url.resolve(tUrl, userHref);

var title = $('.topic_full_title').text().trim().replace(/n/g,"");;

var href = topicUrl;

var comment1 = $('.reply_content').eq(0).text().trim();

var author1 = $('.reply_author').eq(0).text().trim();

//传递参数到下一次并发抓取

ep.emit('user_html', [userHref, title, href, comment1, author1]);

在eventproxy这一次中,我们要找到score是放在哪里(class="big")。

{<2>}

查看图片

找到classname就好办了,我们先试着把结果输出一下

var outcome = superagent.get(userUrl)

    .end(function (err, res) {

        if (err) {

            return console.error(err);

        }

        var $ = cheerio.load(res.text);

        var score = $('.big').text().trim();

        console.log(user[1]);

        console.log(user[2]);

        console.log(user[3]);

        console.log(user[4]);

        console.log($('.big').text().trim());

        return ({

            title: user[1],

            href: user[2],

            comment1: user[3],

            author1: user[4],

            score1: score

        });

    });

});

运行程序,这段代码得到的结果。

{<3>}

查看图片

但是问题来了,我们在.end()的回调函数中能正确输出结果,但是不能正确的输出outcome。仔细一看,需要输出的outcome是一个Request对象。这是因为粗心犯的错的,.end()函数并不会传递返回值给Request对象,需要将结果返回到上一层(users)。

//find userDetails

ep.after('user_html', topicUrls.length, function(users){

    users = users.map(function(user){

        var userUrl = user[0];

        var score;

        superagent.get(userUrl)

            .end(function (err, res) {

                if (err) {

                    return console.error(err);

                }

                //console.log(res.text);

                var $ = cheerio.load(res.text);

                score = $('.big').text().trim();

            });

        return ({

            title: user[1],

            href: user[2],

            comment1: user[3],

            author1: user[4],

            score1: score

        });

    });

把users好好地输出发现除了score1其他是正确值。仔细调试发现,程序是先进行了console.log(),然后再进行.map()。更准确地说,在.map()函数内,.get()的回调函数并没有执行完赋值score,return 返回值就进行了。这就是回调函数的异步,而外层的同步操作是不会等待回调函数做完操作的。

{<4>}

查看图片

我的做法就是eventproxy再emit一层消息,伴随着消息把需要的数据一起传递给接收消息操作.after(),只有当消息全部接收完毕,再打印出传递的参数(结果)。

score = $('.big')text().trim();

//新添加

ep.emit('Got_score', [user[1], user[2], user[3], user[4], score]);

.....

ep.after('got_score', 10, function(users){

console.log(users);

});

{<6>}

查看图片

这个问题解决了,但score1的数值好像太大了点吧。再一看,原来class='big'有两个,用户的话题收藏也是属于这个class。我们得通过cheerio的.slice( start, [end] )来切取第一个元素,即将score 修改为 score = $('.big').slice(0).eq(0).text().trim();。正确结果如图。

{<7>}

查看图片

--结束END--

本文标题: NodeJS制作爬虫全过程(续)

本文链接: https://www.lsjlt.com/news/12065.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • nodejs如何制作爬虫实现批量下载图片
    小编给大家分享一下nodejs如何制作爬虫实现批量下载图片,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!今天想获取一大批猫的图片,然后就在360流浪器搜索框中输入 猫 ,然后点击图片。就看...
    99+
    2024-04-02
  • Python爬虫和反爬技术过程详解
    目录一、浏览器模拟(Headers)如何找到浏览器信息打开浏览器,按F12(或者鼠标右键+检查)点击如下图所示的Network按钮按键盘Ctrl+R(MAC:Command+R)进行...
    99+
    2024-04-02
  • Python爬虫过程是怎样的
    本文小编为大家详细介绍“Python爬虫过程是怎样的”,内容详细,步骤清晰,细节处理妥当,希望这篇“Python爬虫过程是怎样的”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。网络爬虫从一个或若干初始网页的URL开...
    99+
    2023-06-17
  • 如何利用aiohttp制作异步爬虫
    这篇文章主要介绍“如何利用aiohttp制作异步爬虫”,在日常操作中,相信很多人在如何利用aiohttp制作异步爬虫问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何利用aiohttp制作异步爬虫”的疑惑有所...
    99+
    2023-06-17
  • 基于node.js如何制作简单爬虫
    这篇文章主要为大家展示了“基于node.js如何制作简单爬虫”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“基于node.js如何制作简单爬虫”这篇文章吧。目标:...
    99+
    2024-04-02
  • 基于node.js怎么制作简单爬虫
    这篇文章主要讲解了“基于node.js怎么制作简单爬虫”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“基于node.js怎么制作简单爬虫”吧!目标:爬取 http://tweixin.yuey...
    99+
    2023-06-17
  • 爬虫入门基础-HTTP协议过程
    ...
    99+
    2023-06-01
  • python反反爬虫技术限制连续请求时间处理
    目录前言用勾子函数根据缓存行为设置访问时间爬虫相关库1. 爬虫常用的测试网站:httpbin.org2. requests-cache为原有代码微创式添加缓存功能缓存的清空...
    99+
    2024-04-02
  • 基于微信小程序+爬虫制作一个表情包小程序
    跟朋友聊天斗图失败气急败坏的我选择直接制作一个爬虫表情包小程序,从源头解决问题,从此再也不用担心在斗图中落入下风 精彩专栏持续更新↓↓↓ 微信小程序实战开发专栏 ...
    99+
    2023-08-31
    微信小程序 小程序 表情包 爬虫 windows
  • 怎么使用python反爬虫技术限制连续请求时间
    这篇文章主要介绍了怎么使用python反爬虫技术限制连续请求时间的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么使用python反爬虫技术限制连续请求时间文章都会有所收获,下面我们一起来看看吧。用勾子函数根据...
    99+
    2023-07-02
  • 爬虫爬取过程中代理IP会遇到什么问题
    小编给大家分享一下爬虫爬取过程中代理IP会遇到什么问题,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!学爬虫数据,必然是爬虫和反爬虫的对抗。用代理ip做反爬虫还是比...
    99+
    2023-06-14
  • python爬虫怎么利用requests制作代理池s
    本篇内容介绍了“python爬虫怎么利用requests制作代理池s”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!  爬取代理然后验证代理,...
    99+
    2023-06-02
  • 爬虫过程中代理ip的获取方法
    本篇内容主要讲解“爬虫过程中代理ip的获取方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“爬虫过程中代理ip的获取方法”吧!1、利用爬虫脚本每天定期抓取代理网站上的免费ip,或者购买一定数量的...
    99+
    2023-06-20
  • python爬虫lxml库解析xpath网页过程示例
    目录前言(一)xpath是什么(二)xpath的基本语法 路径查询。(三) lxml库(四)lxml库的使用 导入lxml.etree(五)实例演示前言 在我们抓取网页内容的时候,通...
    99+
    2024-04-02
  • 在Python爬虫过程中怎么使用代理IP
    这篇文章主要介绍了在Python爬虫过程中怎么使用代理IP,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。python是什么意思Python是一种跨平台的、具有解释性、编译性、...
    99+
    2023-06-14
  • java编程实现简单的网络爬虫示例过程
    本项目中需要用到两个第三方jar包,分别为 jsoup 和 commons-io。 jsoup的作用是为了解析网页, commons-io 是为了把数据保存到本地。 1.爬取贴吧 第...
    99+
    2024-04-02
  • 如何在Pycharm中制作自己的爬虫代码模板
    目录写作背景爬虫代码在 Pycharm 中设置代码模板写作背景 最近本菜鸡有几个网站想要爬,每个爬虫的代码不一样,但 有某种联系,可以抽出一部分通用的代码制成模板,减少代码工作量,于...
    99+
    2024-04-02
  • Python制作动态词频条形图的全过程
    目录前言前期准备数据的选择与获取分词筛选与可视化总结前言 ”数据可视化“这个话题,相信大家并不陌生,在一些平台,经常可以看到一些动态条形图的视频,大多都是某国家 GDP 的变化或者不...
    99+
    2024-04-02
  • 使用JavaIO流和网络制作一个简单的图片爬虫
    目录Java IO流和网络的简单应用Java IO 流和 URL 类Java IO流URL 类Java 爬虫ClientDataProcessUtilDownLoadUtilWind...
    99+
    2023-05-14
    JavaIO流 网络 JavaIO流爬虫 图片爬虫
  • 基于Python3制作一个带GUI界面的小说爬虫工具
    目录效果图开发完成后的界面采集过程界面采集后存储主要功能用到的第三方模块打包为 exe 命令全部源码效果图 最近帮朋友写个简单爬虫,顺便整理了下,搞成了一个带GUI界面的小说爬虫工具...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作