nodeJs 写个爬虫小玩意
内容
起一个服务,爬某个网站的数据(我这里爬了个夕阳红游戏交易网站的数据),页面看到我要爬的内容
代码
1 //引入内置的http包
2 var http = require('http');
3 const request = require("request");
4 const cheerio = require("cheerio");
5 //创建服务
6 var server = http.createServer(function(req, res) {
7 // res.end('111'); //注意这里 括号里不管是什么都要加上‘引号’
8 getInfo(res)
9 });
10
11 //端口监听
12 server.listen(8080);
13
14 /**
15 * 获取每一条的信息
16 */
17 const getInfo = (res) => {
18 res.writeHead(200, {'Content-type': 'text/html;charset=utf-8'})
19 request({
20 url: 'http://tl.cyg.changyou.com/goods/selling?world_id=0&have_chosen=&page_num=2#goodsTag',
21 method: 'get',
22 headers: {
23 'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36',
24 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3',
25 // 这里巨坑!这里开启了gzip的话http返回来的是Buffer。
26 // 'Accept-Encoding': 'gzip, deflate',
27 'Accept-Language': 'zh-CN,zh;q=0.9',
28 'Cache-Control': 'no-cache',
29 },
30 // 想请求回来的html不是乱码的话必须开启encoding为null
31 encoding: null
32 }, (e, r, body) => {
33 // 这样就可以直接获取请求回来html了
34 // console.log('打印HTML', body.toString()); // <html>xxxx</html>
35 const $ = cheerio.load(body);
36 const $li = $('.pg-goods-list .role-item');
37 const list = []
38 $li.map((i, index) => {
39 let obj = {};
40 obj.link = $(index).children('dl').children('dt').children('a').attr('href');
41 list.push(obj);
42 res.write(obj.link)
43 res.write('<br/>')
44 });
45 res.write('<br/>')
46 res.end('爬完了') //注意这里 括号里不管是什么都要加上‘引号’
47 });
48 }
输出
思路
本地起一个服务,然后打开页面,相当于调了一次请求,开始调取需要爬数据的网站的html,然后用cheerio相关的获取页面元素,类似jquery。然后把信息在页面上打印出来
nodeJs 写个爬虫小玩意的更多相关文章
- NodeJS写个爬虫,把文章放到kindle中阅读
这两天看了好几篇不错的文章,有的时候想把好的文章 down 下来放到 kindle 上看,便写了个爬虫脚本,因为最近都在搞 node,所以就很自然的选择 node 来爬咯- 本文地址:http://w ...
- 一次使用NodeJS实现网页爬虫记
前言 几个月之前,有同事找我要PHP CI框架写的OA系统.他跟我说,他需要学习PHP CI框架,我建议他学习大牛写的国产优秀框架QeePHP. 我上QeePHP官网,发现官方网站打不开了,GOOGL ...
- nodejs写的一个网页爬虫例子(坏链率)
因为工作需要,用nodejs写了个简单的爬虫例子,之前也没用过nodejs,连搭环境加写大概用了5天左右,so...要多简陋有多简陋,放这里给以后的自己看~~ 整体需求是:给一个有效的URL地址,返回 ...
- nodejs的简单爬虫
闲聊 好久没写博客了,前几天小颖在朋友的博客里看到了用nodejs的简单爬虫.所以小颖就自己试着做了个爬博客园数据的demo.嘻嘻...... 小颖最近养了条泰日天,自从养了我家 ...
- nodejs http小爬虫
本课程用nodejs写一个http小爬虫,首先科普一下,爬虫就是把网上的网页代码给弄下来,然后纳为己用.目前最大的爬虫:百度快照等的. 下面直接上代码 示例一: var http = require( ...
- nodejs eggjs框架 爬虫 readhub.me
最近做了一款 高仿ReadHub小程序 微信小程序 canvas 自动适配 自动换行,保存图片分享到朋友圈 https://gitee.com/richard1015/News 具体代码已被开源, ...
- 读书笔记汇总 --- 用Python写网络爬虫
本系列记录并分享:学习利用Python写网络爬虫的过程. 书目信息 Link 书名: 用Python写网络爬虫 作者: [澳]理查德 劳森(Richard Lawson) 原版名称: web scra ...
- [原创]手把手教你写网络爬虫(4):Scrapy入门
手把手教你写网络爬虫(4) 作者:拓海 摘要:从零开始写爬虫,初学者的速成指南! 封面: 上期我们理性的分析了为什么要学习Scrapy,理由只有一个,那就是免费,一分钱都不用花! 咦?怎么有人扔西红柿 ...
- [原创]手把手教你写网络爬虫(5):PhantomJS实战
手把手教你写网络爬虫(5) 作者:拓海 摘要:从零开始写爬虫,初学者的速成指南! 封面: 大家好!从今天开始,我要与大家一起打造一个属于我们自己的分布式爬虫平台,同时也会对涉及到的技术进行详细介绍.大 ...
- [原创]手把手教你写网络爬虫(7):URL去重
手把手教你写网络爬虫(7) 作者:拓海 摘要:从零开始写爬虫,初学者的速成指南! 封面: 本期我们来聊聊URL去重那些事儿.以前我们曾使用Python的字典来保存抓取过的URL,目的是将重复抓取的UR ...
随机推荐
- Vue 04 谷歌浏览器配置vue开发者工具
参考链接:https://blog.csdn.net/wswq2505655377/article/details/111476799 1 插件下载 由于国内打不开谷歌商店,直接从网盘下载 链接:ht ...
- 【Oculus Interaction SDK】(九)使用控制器时显示手的模型
前言 这篇文章是[Oculus Interaction SDK]系列的一部分,如果发现有对不上的对方,可以回去翻看我之前发布的文章,或在评论区留言.如果文章的内容已经不适用于新版本了,也可以直接联系我 ...
- Vue框架-03:JS的几种循环方式,Key值的解释,数组/对象的检测与更新,input事件,v-model数据双向绑定,过滤案例,事件修饰符,按键修饰符,表单控制
目录 前端开发之Vue框架 一.JS循环的几种方式 1.v-for可循环的变量 2.js的循环方式 二.Key值的解释 三.数组.对象的检测与更新 四.input事件 五.v-model双向数据绑定 ...
- Vue前后端交互、生命周期、组件化开发
目录 Vue前后端交互.生命周期.组件化开发 一.Vue用axios与后端交互 二.Vue的生命周期 三.组件化开发 Vue前后端交互.生命周期.组件化开发 一.Vue用axios与后端交互 如果 ...
- css当文字过长时,显示省略号
/* 省略号三属性 */ /* 强制不换行 */ white-space: nowrap; /* 溢出隐藏 */ overflow: hidden; /* 省略号 */ text-overflow: ...
- 0x06_自制操作系统My-OS,IDT,GDT,PIC初始化,实现键盘中断
把class03改成class04 IDT,GDT,PIC 我来介绍什么是IDT和GDT,PIC,怎么实现键盘中断 GDT全局描述表在16位CPU用不到,到了32位CPU要用. 16位CPU实模式用基 ...
- JZOJ 2020.02.01【NOIP提高组】模拟A 组
2020.02.01[NOIP提高组]模拟A 组 二月份第一场比赛 闲话 惨烈啊! 50+30+0=80分 一题都没A 唉 最高150? \(zzh\) 暴虐A组 总结: 若干新东西 \(T1\) 我 ...
- TrueNAS安装 一个厉害的nas系统
转载: 戴俊财--个人学习网站 https://www.daijuncai.cn/?p=128
- Android:ViewModel
什么是 ViewModel ViewModel 旨在以注重生命周期的方式存储和管理界面相关数据.ViewModel 让数据可在发生屏幕旋转等配置更改后继续留存. 上面一段话是截取自官方文档对 View ...
- LeetCode-1994 好子集的数目
来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/the-number-of-good-subsets 题目描述 给你一个整数数组 nums .如果 ...