咪哥杂谈
本篇阅读时间约为 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 即可获得。
▼
往期精彩回顾
▼
你点的每个在看,我都认真当成了喜欢
转载:https://blog.csdn.net/weixin_38753698/article/details/103775866