pyspider爬取王者荣耀数据(下)

Source

咪哥杂谈

本篇阅读时间约为 4 分钟。

1

前言

本篇来继续完成数据的爬取。离上周文章已经过了一星期了,忘记的可以回顾下:《pyspider爬取王者荣耀数据(上)

上篇文章中写到的,无非就是头像图片的懒加载是个小困难点,其余部分,操作起来使用网页自带的 css 选择器很好选择。

2

pyspider爬取数据

1. 完善上周的代码

右侧是完善的代码,将具体的目标爬取了下来,并且可以看到左侧上方已经输出了响应的内容。

写完代码后,别忘了点击右上方的 save 按钮。(具体代码文末有获取方式)

2. pyspider启动爬取

写好了代码后,如何去启动此爬虫呢?

首先回到配置任务的界面,画红线是我现在编写的任务:

可以看到有个 status 栏,你需要将此状态换成 debug 或者 run 才行。

点击 run ,即可运行,同时progress的进度条也会变颜色:

3. 获取数据

pyspider的数据落地,也很好的帮我们实现了,只需要点击 results ,便可以看到,目前有三种不同的方式,由于本次数据没有多大的量,所以直接用 csv 下载即可。

对于一些字段来说,我在程序中将他们封装成了 dict 的形式,所以 csv 中有些列是以字典的内容存在的,我想要的是最后以 excel 的形式展示,所以这里自己写个程序处理一下。(后面写篇 excel 单独处理的文章)

4. 关于数据落地于数据库中

如果当你的数据量异常大的时候,那么肯定不能使用框架提供的 csv 等来存储数据了。

此时的做法,引入相应的数据库即可,以 mysql 为例。下面提供一个编程的思路,无代码。

在 pyspider 提供的 Handler 类中,可以自行实现一个 __init__ 方法(学过面向对象的同学应该不陌生),在此方法中,对连接 mysql 数据库的操作进行初始化,生成一个实例对象变量 db

这样一来,在 detail_page 函数中,我们便可以用 self.db 的方式来对 mysql 实例进行入库操作。

3

总结

pyspider爬取的入门教程,到此结束。

在此次爬取中,图片的懒加载可以注意下,找到对应js即可。

对比一下用框架来爬取数据,和我们自己写代码的区别:

当我们自己写爬虫时,你需要清晰地知道自己的爬取目标是什么,以此来规划自己的爬取流程,根据流程,一步步定义出具体的函数。同时,你还需要自己构造对应的请求函数,比如利用 requests 模拟请求等。

当我们使用框架时,爬取流程的结构代码,框架来实现,不用我们自己去写,请求服务端的函数,框架帮我们实现,我们只需要将自己的注意力放在如何爬取目标即可,数据落地同理。

有想要看 pyspider 源码的同学,后台回复 pyspider 即可获得。


往期精彩回顾

用Python发免费短信的正确姿势

李笑来:自学是门手艺(开源11k star书籍推荐)

硬核!用Python为你的父母送上每日天气提醒!

你点的每个在看,我都认真当成了喜欢

发布了51 篇原创文章 · 获赞 79 · 访问量 3万+