Python 爬虫进阶?
根据题主的描述,我猜测应该是已经根据网上的一些教程、博客写爬虫抓取过一些简单的内容,然后想要继续深入的时候,发现网上更进一步的学习资源不那么好找了。会抓取贴吧图片(猜测是网上教程抓取一个帖子下的图片而不是全贴吧)、能够使用多线程、抓取代理 IP、有 scrapy 的经验,接下来该怎么做,给你一点建议(这个问题是大半年以前提的,估计你已经不需要我的建议了 ^_^),仅供参考,错了你也没法把我怎么样~~~
首先,可以多抓取一些代理 IP,并不断更新,以及有一套完整的校验代理 IP 可用性和淘汰过期代理的程序,你的代理库要随时拥有五位数的可用代理 IP,并保证不可用 IP 会在失效后较短时间被剔除出去。大部分情况下,爬虫的效率瓶颈并不在你开几个线程,多大并行。因为大部分商业网站(个人博客、小网站和一些反爬虫较弱的站除外)都会根据你的访问频率限制,所以太快之后分分钟被封,你需要很多代理 IP, 在被封之后可以迅速切换新的 IP 继续抓取。
其次,你可以锻炼自己抓取复杂网页的能力。你可以尝试做网站登录,到前端渲染异常丰富的网站的抓取都是练手的好机会。切记,对于稍微复杂的验证码,不要去做所谓破解验证码,这需要较强的基础知识(包括但不限于统计学、图像识别、机器学习、...),可能还没有识别出验证码,你就先失去了兴趣。先手工打码,做你正在做的事情爬虫。先去尝试登录豆瓣、人人,然后去尝试微博,再到 Google 这样两步验证的网站。前端复杂的动态网站,去尝试微博、QQ空间等等吧。
然后,考虑那种会随时增加内容的网站,如何增量式抓取数据。比如,58 每天会产生新的招聘信息,如何只是增量式抓取这部分新增数据,而不需要重复抓取已有数据。这需要考虑如何设计存储。增量式的抓取可以帮你实现在最小化资源的情况下对一个网站进行数据监控。
然后,尝试抓取大量的数据。大量值得是那种单机基本上搞不定的网站,就算可以搞定,也一定要多搞几台机器弄成分布式抓取。爬虫的分布式不同于你想象中的分布式,你仅仅需要控制一个任务生成端、一个任务分发端和一批爬虫消费任务即可。
最后,尝试融合上面的内容,就基本可以做到「只要浏览器可以打开,我就可以抓取到」的水平了。
---------------------
爬虫无非三步:
- 下载源码
- 抽取数据
- 存储数据
所以,你需要考虑的是:
- 如何高效的抓取
- 如何抽取有用的数据
- 如何设计存储结构
- 如何近乎实时的更新
- 如何判重并减少冗余数据存储
书籍方面,不负责任地推荐一本:Python网络数据采集 (豆瓣) 。
查看评论 回复
"Python 爬虫进阶?"的相关文章
- 上一篇:CS231n课程笔记翻译:Python Numpy教程
- 下一篇:自由软件利与弊