用mac的python写网络爬虫_你是如何开始能写 Python 爬虫?

很久之前的问题了, 不知道现在题主已经入门了没, 我以我入门到工作的情况来说一下, 这里首先要感谢 @xlzd, 当时入门到进阶看了很多他的文章, 在这里表示感谢, 回答此问题也是因为刷到他最近回答了此问题,

1. 基础

想起我入门的时候也是先学会了python, 然后有一段时间不知道去做什么, 后来偶然机会看到一个糗事百科的爬虫脚本, 然后自己就去了解了下爬虫的定义, 直接去抄脚本, 虽然没有技术含量, 但是当时也碰到了很多问题, 比如一开始我用的标准库urllib2, 后来去使用requests, 然后去使用bs4解析, 直接命令行输出.

虽说现在回想起来简直简单的不行, 但是放到当时估计和题主的情况一样, 一堆的坑. 等到这个脚本完成了, 也就可以说是入门了. 之后的一小段时间我一直使用的这两个, 写了很多的脚本, 可以参考https://github.com/qshine/Note/tree/master/spider

过了此阶段, 应该学会了请求库requests, bs4等库, 也知道了http的很多方法和状态码, 可能还顺带解决了编码的问题.

2. 入门

当你完成了第一个步骤, 就可以开始优化了. 有没有觉得爬虫很慢, 是不是要把爬取到的结果放入文件, 或者放入数据库等, 下面来挨个突破.速度慢

之前的脚本一直是单个请求线性的执行, 那么可以开始优化为多线程/多进程的去爬取, 此阶段需要不断去学习python中多进程/多线程等相关知识.

解析

之前我们一直使用的bs4, 相信你碰到了很多解析情况已经能够熟练使用了, 那么此时可以开始了解正则表达式, lxml的使用, 当然还有pyquery等工具, 不过先把前两个学会吧. 这几个工具不需要死记, 不会了及时查找就好.

存储

可能之前你都是把结果直接放到终端上或者保存到文件的, 那么现在可以开始学习数据库了, 推荐MySQL, 学会基本的增删改查, 学会使用pymysql来连接, 能够保存数据到数据库. 如果感兴趣的话学习一下ORM工具SQLAlchemy.

3. 进阶(1)

完成了2阶段, python基础应该掌握的差不多了, 现在可以接触部分爬虫框架的知识, 建议scrapy和pyspider, 入门应该都不算难, 入门后应该可以把之前的脚本再次改造一遍, 用以下中间件, 信号等, 顺便可以把数据库换乘mongodb, 此时便又多学会了一门数据库.

改造完成一个后还可以继续改造, 比如把scrapy改造为分布式的爬虫, 可以使用scrapy-redis工具, 如果这个也搞定了, 那么你已经会分布式了.

到了这一步, 应该能说能够熟练使用各种包和工具了, 此时我建议应该读你使用的工具的源代码进行学习, 如requests模块, scrapy的去重方式是怎样的, scrapy-redis内部的原理是怎么实现的, 我个人觉得读源码是提升很快的一条道路.

4. 进阶(2)

到了这一步, 应该很大概率碰到了请求数据返回空的情况, 没错, 大部分是被js加密了, 此时需要学会怎样去找js的加密方法, 下面给出几个样例网易云音乐歌曲评论

电信模拟登录

这一步很烦人, 我现在碰到的大部分都是这样一种情况, 但是如果想继续进步的话这一步是绕不开的.

5. 进阶(3)

该阶段主要学会手机app抓包, 我日常使用mac下的charless工具, 学会一整套流程即可

6. 交互式爬虫

基础一直没有变化, 更多的是情况复杂了起来. 此处不详细讨论.

7. 其它

以上我认为已经涵盖了大部分的知识, 我个人除工作外也使用以上知识跑了很多数据, 其中包括知乎用户和关系数据并做了可视化

但是这远远不是终点, 比如更高阶的如手机app反编译来找到加密方法, 简单验证码的识别, 这也是我最近碰到的情况, 因为还没有学会, 所以暂且不说.

总之, 我觉得爬虫和挖洞有点类似, 总是在寻找网站的弱点, 不管是web, m站还是app, 通过各个渠道来找到更简单拿到数据的方法, 有时还要登录等, 碰到防守严一点的站, 很多情况会怀疑自己的方法对不对, 为什么拿不到数据等等.

最后的最后, 当你能够拿到数据, 也希望你对网站好一点, 不要很疯狂的去爬.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值