赞
踩
虽然不是专业的爬虫工程师,但作为一个Pythoner,一直对爬虫情有独钟。
Python有很多爬虫框架,比如Scrapy、PySpider等。我不是一个特别喜欢用轮子的人,所以根据有限的爬虫知识,结合其他框架架构,自己造了一个用起来特别顺手的轮子:PSpider,也加深了自己对爬虫框架、多线程、多进程等概念的理解。
PSpider框架的Github地址:xianhu/PSpider · GitHub,欢迎大家拍砖点赞。
从开始设计这个框架,就坚持“简洁”的原则,尽量不去使用一些高级的第三方库,同时保证代码量也比较少。所以这个框架完全可以当做自己练手写爬虫框架的参考。
先说一下PSpider都帮我做过哪些抓取工作吧。
从开始着手PSpider到现在,也有将近两年的时间了。两年时间内,几乎每周都会对其进行修改,包括添加功能、修改Bug、更改接口等,以应对不同的应用场景。到了最近半年PSpider才开始慢慢趋于成型和稳定,并应用在公司实际项目中。
PSpider的代码量非常少,只看代码的话都不足700行。当然另外还有相当一部分的注释和docstring,下图是这个框架代码方面的一些概览:
这里简单说一下框架的结构和功能,有什么不明白的,可以自己去读一下源码,应该很容易理解。PSpider框架主要有三个Module,分别为utilities、instances和concurrent。
除了三个目的性比较强的模块之外,该框架还定义了比较详细的debug日志规范,同时使用了其他一些Python中的技巧(比如装饰器、动态类等)。能作为Python爬虫框架的同时,也是比较好的Python入门资源。更多功能、配置、参数等,可以查看代码学习。
框架的主要目的就是为了让爬虫工程师在编写爬虫时更专注于构造合理的request、解析网页以及存储网页,而不是浪费时间在如何写工具函数、如何进行线程调度、如何进行进程通讯、如何保证线程、进程正常退出等等。没有哪个框架十全十美,也没有哪个框架完全通用,顺手、稳定才是硬道理。
这个框架目前还不够完善,我还会不断思考、更新它,基本会保持在每周更新一次。大家有什么功能性建议,或者在架构上有什么其他好的想法,可以给我留言或者在github上提Issues、Pull requests等,我会积极考虑大家建议的。
下一步主要的计划是改写为分布式的爬虫,提高抓取效率。
这里贴两张测试流程中的日志输出:
学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!
朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】。
Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。
最后,千万别辜负自己当时开始的一腔热血,一起变强大变优秀。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。