前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >学习python爬虫的平凡之路

学习python爬虫的平凡之路

作者头像
luanhz
发布2020-03-31 17:09:36
4870
发布2020-03-31 17:09:36
举报
文章被收录于专栏:小数志小数志

写在前面

人生苦短,我用python。 学习python已有两月有余,但若刨除出差和日常繁杂事务,实际的有效学习时间其实也挺有限的。和很多python新人一样,我也是从python爬虫入手的,一段几十行的小代码就能从浩瀚无际的网络中抓取想要的数据,若是能加几个小技巧甚至就能带来全新的爬虫体验,很容易让人陶醉其间乐此不疲,既能保证学习载体又可在短时间内收获可见的效果。 鉴于已经把python爬虫刚需的大部分方法摸索实践过了,也恰逢2018年的最后一天,所以决定总结下自己的学习之路,算是对过往的一点交代。


Python爬虫10步走

  • 基础知识。包括python基本语法,html常识,重点理解python字符串处理常用方法和2种数据结构:dict(字典)和json。
  • 3个IDE:Idle,Sublime,Pycharm。Idle是python自带的编辑器,非常小巧,但功能也比较受限,适合学习语法阶段使用;Sublime是一个多功能文本编辑器,可以通过设置适用于多种语言,界面简洁而不失华丽,功能强大而不失轻巧,可以满足大部分爬虫需求;Pycharm,从名字就可以看出是一个python定制的IDE,功能极为强大,尤其是虚拟编译环境,据说受到很多专业开发青睐。另外,还有很多大神推荐使用Anaconda,个人尚未尝试,目前仍主用Sublime,对于学习使用已经足够了。
  • 2个爬虫库:urllib 和requests。urllib为python3自带(python2中又细分为urllib和urllib2),requests为第三方库,需手动安装。
  • 3种解析方法:beautifufsoup,xpath,re。xpath适用于结构规律性较强的网页;re采用正则匹配,只要能找出唯一适用的正则表达式即可;beautifulsoup使用也较为简单,但效率较差。个人使用优先级:xpath>re>bs。当然,绝大多数情况下,3种方法可相互替代。
  • 2种抓包分析方法:F12和fiddler。各浏览器F12后都会进入开发者工具,既可以查看具体的html源码,也能分析浏览器和服务器端交互过程,包括request方法,headers,cookie,post data等等,需熟练运用。当面对一些复杂页面或者移动端数据(例如手机APP)时,简单的F12工具则不足以满足需求,此时可以借助抓包工具Fiddler,设置好代理后就能就能将移动端所有数据交互过程全部记录下来,便于分析和抓取。
  • 2个数据库:MySQL和MongoDB。二者都是数据库排名前5的数据库,其中MySQL是关系型数据库的巨鳄(DB-Engines Ranking中排名第2),而MongoDB是非关系型数据库的头牌(DB-Engines Ranking中排名第5,非关系型数据库中排名第1)。爬虫数据量较大时,简单的存储至本地文件不是一个理想的选择,这时就可视具体抓取数据格式决定选用其中一种数据库。
  • 爬虫身份证:cookie。主要是应对一些必须要登录后方可爬取数据的平台,如知乎、淘宝等,这时就必须携带一个登录后的cookie。cookie是一个字典格式的数据,简单的可直接复制就能使用,复杂的可以解析post data后构造,甚至是应用selenium模拟登录后得到。
  • 所见即所得:selenium。为了得到爬虫的身份cookie,一些网站的post data又进行了复杂的加密,此时应用selenium似乎就是一个很好的选择,它几乎可以完全模拟人工登录的过程,从而实现指哪抓哪。若是用可视的浏览器模式,则可以看到浏览器自动化操作的场面;若是用headless模式,则是通常意义的爬虫模式。
  • 程式化爬虫框架:scrapy。若要进行全站抓取,应用scrapy爬虫框架可以事半功倍。实际上,scrapy是一个爬虫模板,通过定制其中的一些设置后(如爬取初始页,抓取数据格式,抓取方法等)即可以快速实现全站抓取。scrapy用得熟练之后,也十分有利于培养爬虫工程师思维。
  • 高效爬虫:threading。就像计算机最终从单核走向了多核一样,爬虫最终还是要走向多线程乃至分布式。尤其是待爬取的任务工作量大而又重复度很高时,就非常适用多线程爬虫,相当于从一只虫子变成了多只虫子在爬,效率提升明显。

最后,附一张python爬虫学习路线图

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-02-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小数志 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档