我浏览了下网上关于怎么Python爬虫入门的文章,发现有的还在教人用urllib来发送http请求,这真是有点误人子弟了。本文也不提倡刚开始去学习第三方爬虫框架,我想把要学习的知识简化一些,让入门更快速,更专注。
Python爬虫入门:技能
真要说Python爬虫需要具备什么知识,那就是你得会Python,哈哈。
其他的知识就是你能熟练运用Python的几个第三方库,当然你具备一点html javascript css http协议 可以提高你的解决问题的效率,但这是一篇入门文章,我们不再这里讨论。
为什么要这样说呢?先来说说爬虫是怎么一会事。
Python爬虫入门:爬虫流程
爬虫程序的完整流程是:
1.通过网络编程把网站上的网页请求下来;
2.对这些网页做数据抽取;
3.把抽取出来的数据存进数据库(或文件)里。
4.循环重复上述步骤,为了抓取大量网页。
下面对上述4个步骤做详细说明:
步骤1:怎么把网页请求下来,你就使用 Python requests 库好了。requests库强大而简洁,他能帮你把网站上的网页请求下来。
步骤2:对请求下来的网页做数据抽取的方式很多。比如用lxml,xpath,BeautifulSoup这些Python库,我这里对初学者推荐用正则式re库,因为lxml,xpath那些的学习时间要长一点,而且对html要有点概念。你先学习下怎么写正则表达式来抽取网页里的数据。
步骤3:这很简单,你是练习的话,你就先把抽取的数据写进文件就好了。
步骤4:这是程序的设计逻辑问题,其实跟爬虫本身不相关,要能循环重复上面的步骤,最简单就是写一个循环语句是吧。
一个爬虫程序其实就是由上述几个动作构成的,大量抓取网页—>对抓取的网页结构化—->把结构化的数据存进数据库—>重复上述步骤。
我们会在4个动作上加入大量的代码(这些代码可能是你自己写的,也可能是运用第三方Python库来辅助写的),其目的就是保证上述四个动作稳定,高效,精准。
比如要保证步骤1的稳定抓取,你要对requests库的请求做容错处理,记录已经抓取的URL,防止重抓取,研究http header和对方网站的访问频率控制策略来降低你的爬虫被屏蔽的概率。
比如要保证步骤2结构化数据的准确度,你就要用chrome浏览器去抓包,用正则表达式re库久了,就会想要试着用下lxml,xpath看看解析网页是否更快速,更准确等。
比如步骤4,等你想要大量高效率抓取网页时,你可能会想试着把程序改成异步IO,或者多线程等。
以上就会让一个原本只有几十行代码的爬虫程序,膨胀到上百行,过千行代码,我们称之为较为高可用,高效率的爬虫程序。
Python爬虫入门:多动手练熟练
在实践中提高Python爬虫技能
我建议作为初学者,尤其如果你的Python又还不太熟悉时,你就从最简单爬虫开始写起,你用这个程序去抓取网页,在这个抓取网页的过程中,你会遇到形形色色的网络问题,网页解析问题,被屏蔽问题,各种报错,遇到问题就善用搜索引擎,去搜索解决方法,在解决这些问题的过程中,你的知识就在巩固和提高,你对爬虫的认知也在提高,这个时候你自己就会想有没有第三方Pyhton库可以来解决这些问题,自己是不是还有些知识点欠缺,这个时候你再反过来去学习相关知识点,这时候你的接受程度和理解程度就快速和容易很多。
如果你依然在编程的世界里迷茫,可以加入我们的Python学习扣qun:784758214,看看前辈们是如何学习的!交流经验!自己是一名高级python开发工程师,从基础的python脚本到web开发、爬虫、django、数据挖掘等,零基础到项目实战的资料都有整理。送给每一位python的小伙伴!分享一些学习的方法和需要注意的小细节,点击加入我们的 python学习者聚集地
总结一下:
作为初学者,你先学习python requests库和re正则表达库后,就开始写爬虫吧,多动手撸码比什么都重要。
PS:python requests 运用熟练了,你就已能写出一个有用处的爬虫了。