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

共 1240字,需浏览 3分钟

 ·

2019-12-30 23:21

咪哥杂谈

8b7a8ab3a4bd735e47e150f2581c2047.webp

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


1

前言


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


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


2

pyspider爬取数据


1. 完善上周的代码


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


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


9f16370bd3570d279575523928a0d2ca.webp


2. pyspider启动爬取


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


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


11d1e7c9a6ee884dbd00057d6ae1c97a.webp

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


f7985204cb5c15f804af9edfe9102c6d.webp

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


49b3c5461baea0869889b2aa56df5702.webp


3. 获取数据


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


b2bdb4b47b7a9a0e07e1115be56b1083.webp


对于一些字段来说,我在程序中将他们封装成了 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为你的父母送上每日天气提醒!



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


浏览 19
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报