node爬虫(简版)

做node爬虫,首先像如何的去做这个爬虫,首先先想下思路,我这里要爬取一个页面的数据,要调取网页的数据,转换成页面格式(html+div)格式,然后提取里面独特的属性值,再把你提取的值,传送给你的页面上,在你前端页面显示,或者让你的前端页面能够去调取这些返回的值。

首先要安装以下的依赖

// 调取
npm install --save request-promise
// 转换成页面格式
npm install --save cheerio
// 打开node使用
npm install --save express
// 安装依赖
npm install --save request

  然后在代码中去使用依赖东西,来转换页面格式调取页面值

        // 把网址转换成页面格式
        let result = await request(URI)
        $ = cheerio.load(result)
        // 获取表头文本
        let name = $(‘#activity-name‘).text()
        name = name.replace(/\ +/g,"")
        name = name.replace(/[\r\n]/g,"");
        name = `<h1>${name}</h1>`
        // 获取内容文本
        let test = $(‘#js_content‘).text()
        test = test.replace(/[\r\n]/g,"");
        test = `<p>${test}</p>`

  在页面中获取页面值上面的代码是没有问题的,重点事爬取图片

在普通的浏览器页面上爬取图片的时候,直接获取他的src就可以,但是有些很是特殊的,下面的代码爬取普通的浏览器图片

// 获取图片
        let add = $(‘p img‘)
        let att =[]
        for ( let i=0;i<add.length;i++){
            let imgPath = add.eq(i).attr("src")
            att.push(imgPath)
        }

  在页面上显示(访问自己定的接口)

app.listen(3000, () => {//启动一个3000端口的server服务
    console.log(‘Listening on port 3000‘)
  })

  打开localhost:3000查看效果

样式我这里没有调,只加了两个语义化标签。给上段完整代码吧

const request = require(‘request-promise‘)
const cheerio = require(‘cheerio‘)
let express = require(‘express‘)
let app = express()
const URI = ‘https://mp.weixin.qq.com/s/MWvlJHu7ptHQMLBpA0u9oA‘

app.get(‘/‘, async (req, res) => {
        // 把网址转换成页面格式
        let result = await request(URI)
        $ = cheerio.load(result)
        // 获取表头文本
        let name = $(‘#activity-name‘).text()
        name = name.replace(/\ +/g,"")
        name = name.replace(/[\r\n]/g,"");
        name = `<h1>${name}</h1>`
        // 获取内容文本
        let test = $(‘#js_content‘).text()
        test = test.replace(/[\r\n]/g,"");
        test = `<p>${test}</p>`
        // 获取图片
        let add = $(‘p img‘)
        let att =[]
        for ( let i=0;i<add.length;i++){
            let imgPath = add.eq(i).attr("data-src")
            imgPath = imgPath.split(‘?‘)[0]
            att.push(imgPath)
        }
        let img =att.map(el => {
            let a = `<img src=‘${el}‘>`
            console.log(a)
            return a
        })
        // let data = []
        // data.push(name,test,att)
        let data = ‘‘
        data = name + test + img
        res.send(data)
})

app.listen(3000, () => {//启动一个3000端口的server服务
    console.log(‘Listening on port 3000‘)
  })

  接下来说下获取图片的特殊情况,那就是获取微信公众号文章图片的时候

当你把微信公众号地址转换成代码的时候,他图片转化出来的是一个方法,导致你把页面加载完了,但是图片没有加载出来。(根本就没有src)

我们应该获取的事这个img的src但是他调取页面转换成代码的时候,这个加载图片的事件没有走完,导致src事underfunded

有谁能解决这个问题吗?帮忙解答一下,困扰我好长时间了!!!!

原文地址:https://www.cnblogs.com/yishifuping/p/10323682.html

时间: 2024-10-14 23:06:58

node爬虫(简版)的相关文章

安全技能树简版(转)

Expand - Collapse 安全技能树简版 说明 V1 By @余弦 201706 联系我:[email protected] 更新动态关注微信公众号:懒人在思考 工欲善其事必先利其器 世界之大总有一款利器适合你 https://github.com/Hack-with-Github/Awesome-Hacking  这份技能树最适合走向安全工程化之路的人 高效习惯 正则表达式 调试工具 Kodos RegexBuddy https://regexper.com/ 正则表达式30分钟入门

200行代码实现简版react&#128293;

200行代码实现简版react?? 现在(2018年)react在前端开发领域已经越来越??了,我自己也经常在项目中使用react,但是却总是好奇react的底层实现原理,多次尝试阅读react源代码都无法读下去,确实太难了.前不久在网上看到几篇介绍如何自己动手实现react的文章,这里基于这些资料,并加入一些自己的想法,从0开始仅用200行代码实现一个简版react,相信看完后大家都会对react的内部实现原理有更多了解.但是在动手之前我们需要先掌握几个react相关的重要概念,比如组件(类)

node爬虫的几种简易实现方式

说到爬虫大家可能会觉得很NB的东西,可以爬小电影,羞羞图,没错就是这样的.在node爬虫方面,我也是个新人,这篇文章主要是给大家分享几种实现node 爬虫的方式.第一种方式,采用node,js中的 superagent+request + cheerio.cheerio是必须的,它相当于node版的jQuery,用过jQuery的同学会非常容易上手.它 主要是用来获取抓取到的页面元素和其中的数据信息.superagent是node里一个非常方便的.轻量的.渐进式的第三方客户端请求代理模块,用他来

【铜】第131篇 融合一对一canvas视频录制到备份上(二)简版做成及追加图片过程周四

关键词:一对一canvas视频录制, 简版做成,追加图片过程 一.一对一视频录制 1.1 往备份上布录制-----------------bug处理 现在不知道,网页录制都依赖哪些文件,现在需要一个一个的去除.现在去除差不多了,如下: 经过整理发现,仅仅需要两个文件,就能实现录制.如下: 简版访问地址如下: http://localhost:9001/record-canvas-drawings.html#no-back-button 二.追加图片过程 2.1 学生端追加拍照 <li><

【Python之旅】第五篇(四):基于Python Sockct多线程的简版SSH程序

还是继续延续篇五中前三节的例子,通过对代码的修修补补,把它改成一个可以在连接后就能在Client端执行Server端命令的程序,所以就有点类似于SSH连接程序了. 至于还是用前面的例子来改嘛,是因为上课也一直这么干,而且老师也讲得非常不错,自己吸收后也作为一个学习的记录吧,因为确实是非常不错的! 之所以能对前面的例子如这样的修改,应当有这样的思想:前面的例子中,Server端能够返回Client端输入的字符串,那么如果Client端输入的是Linux的shell命令,Server端是否可以执行这

node爬虫解决网页编码为gb2312结果为乱码的方法

最近需要对某消防网站进行宣传力度区域进行统计,使用一般采用的http模块进行数据抓取的时候发现结果是乱码,翻看原网站才发现,该消防网站是gb2312的编码,而http模块爬出的数据不能进行gbk解析,因此本片文章主要为解决用node对网站编码为gb2312爬虫时得到乱码这一问题. 1. 使用工具:webstorm,node开发神器,强烈推荐 2. 再说思路:先对新闻列表页面进行爬虫,再对抓到的链接一一进行目标网页的标题显示和新闻来源的统计,本页面新闻统计完毕后再跳转下一页,重新进行该过程. 备注

省市区(简版)

// //  main.m //  省市区(简版) // //  Created by dllo on 16/2/27. //  Copyright © 2016年 dllo. All rights reserved. // #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { NSString *fileStr = [NSString stringWithC

python练习_购物车(简版)

python练习_购物车(简版) 需求: 写一个python购物车可以输入用户初始化金额 可以打印商品,且用户输入编号,即可购买商品 购物时计算用户余额,是否可以购买物品 退出结算时打印购物小票 以下代码实现的功能与思路: 功能: (1)预算金额控制,只能输入大于0的数字 (2)商品格式化打印 (3)选择完成要买的商品后,提示用户再次确认,确认后开始计算用户余额是否大于等于商品价格,价格正确后则加入购物车 (4)输入q则进行结算,结算时将重复的商品进行合并,显示个数,并计算消费总额和余额 思路:

java语言实现简单接口工具--粗简版

2016注定是变化的一年,忙碌.网红.项目融资失败,现在有点时间整整帖子~~ 目标: 提高工作效率与质量,能支持平台全量接口回归测试与迭代测试也要满足单一接口联调测试. 使用人员: 测试,开发 工具包目录: 使用: 1.填写测试案例 2.修改执行配置文件 3.执行jar类 工具进阶: 粗简版 :实现加密解密封装,满足迭代接口自定义参数测试工作: 简单版:实现接口返回值校验:满足平台全量接口回归校验检查,生成测试报告: demo公开版:实现web界面自定义参数设置.测试计划设置.测试案例维护,测试