- 2023-06-06 09:27:02
- 9982 热度
- 0 评论
前几天发了《使用Node.js制作爬虫教程》之后,有朋友问如果要爬文件怎么办,正好之前也写过类似的,那就直接拿过来写个续篇吧,有需要的可以借鉴,觉得不好的可以留言交流。
案例回顾
上一篇中,主要利用nodejs发起一个getData请求来得到4星角色的id列表。通过chrome开发者工具来查看页面结构,分析得出角色详细页面的URL规则和详细页面中想要抓取内容的位置。再循环遍历4星角色id列表去发起角色详细页面的请求并解析出想要收集的内容。
具体内容可再参考原文:使用Node.js制作爬虫教程
目标分析
案例回顾中提到的角色详细页面(参考样例),有不少图片内容,本文就以抓取“主动技能”的GIF图片为例,来改造一下前文的代码以完成定向抓取图片的效果。
通过Chrome查看图片对象的URL规则为:/img/as2/角色id.gif
编码过程
构建工程和引入框架
$npm init |
上篇代码逻辑
- 发起getData.php请求,获得所有4星角色的ID
- 依次循环根据
char/角色id
规则访问各个角色的详细页面,并解析其中需要的数据并按我们想要的方式存储起来
本篇代码逻辑:
- 发起getData.php请求,获得所有4星角色的ID
- 依次循环根据
/img/as2/角色id.gif
规则下载gif文件到本地
所以,只要修改上篇代码中对每个角色对象的处理逻辑
部分的内容为下载文件即可。
具体代码如下:
var superagent = require('superagent'); |
主要修改内容:
对fs
模块和request
模块的引用,前者用来读写文件,后者用来通过http请求获取文件。
var fs = require('fs'); |
fetchInfo
函数修改成拼接url和本地保存路径,并通过request
进行下载。
由于图片下载较慢修改并发数,async.mapLimit(heroes, 5, function (hero, callback)
执行情况如下,根据配置的并发数5,可以看到如下输出
$ node index.js |
示例到此结束,有需要的去爬爬爬,至于爬什么我就不负责啦,^_^
0 评论
留下评论
热门标签
- Spring(403)
- Boot(208)
- Spring Boot(187)
- Spring Cloud(82)
- Java(82)
- Cloud(82)
- Security(60)
- Spring Security(54)
- Boot2(51)
- Spring Boot2(51)
- Redis(31)
- SQL(29)
- Mysql(25)
- Dalston(24)
- IDE(24)
- mongoDB(22)
- MVC(22)
- JDBC(22)
- IDEA(22)
- Web(21)
- CLI(20)
- Alibaba(19)
- SpringMVC(19)
- Docker(17)
- SpringBoot(17)
- Git(16)
- Eclipse(16)
- Vue(16)
- JPA(15)
- Apache(15)
- ORA(15)
- Tomcat(14)
- Linux(14)
- HTTP(14)
- Mybatis(14)
- Oracle(14)
- jdk(14)
- OAuth(13)
- Nacos(13)
- Pro(13)
- XML(13)
- JdbcTemplate(13)
- JSON(12)
- OAuth2(12)
- Data(12)
- int(11)
- Myeclipse(11)
- stream(11)
- not(10)
- Bug(10)
- Hystrix(9)
- ast(9)
- maven(9)
- Map(9)
- Swagger(8)
- APP(8)
- Bit(8)
- API(8)
- session(8)
- Window(8)
- windows(7)
- too(7)
- HTML(7)
- Github(7)
- JavaMail(7)
- Cache(7)
- File(7)
- IntelliJ(7)
- mail(7)
- Server(6)
- nginx(6)
- jar(6)
- ueditor(6)
- ehcache(6)
- UDP(6)
- RabbitMQ(6)
- and(6)
- star(6)
- Excel(6)
- Log4J(6)
- pushlet(6)
- apt(6)
- Freemarker(6)
- read(6)
- WebFlux(6)
- JSP(6)
- Bean(6)
- error(6)
- are(5)
- SVN(5)
- for(5)
- DOM(5)
- Sentinel(5)
- the(5)
- JWT(5)
- rdquo(5)
- PHP(5)
- Struts(5)
- string(5)
- script(5)