数据抓取(1):Python网络爬虫学习与参考
爬虫类别笔记主要小结自己数据抓取的一些学习参考和经验,后续也考虑放一些自己数据抓取的案例。第一篇先记录一下自己的学习路径和一点体会。
爬虫原理
主要针对平台提供的或网站上呈现的数据。
爬虫是一个可以获取网页上的信息自动化脚本/程序。举例来说:我们打开任何的外部网站,在地址栏都会有一个连接(url),这个网站打开之后就会自动加载页面,包括呈现的数据,比如打开淘宝会呈现商品,我们下拉会继续刷新网页提供新的商品信息……这个过程,回车打开网页即是对特定的url发送请求,url所有者(服务器端)收到请求后处理解析,然后发送响应内容,也就是我们看到的内容,不断下拉也会触发请求从而服务器动态给我们提供信息。这个过程就是一个数据请求的过程。写爬虫也就是通过代码(此处指Python)来实现批量多次
- 按要求发送请求
- 接收响应结果(网页信息或数据)
- 解析并将需要的信息保存到本地
我们的学习主要在于学会解析网页和涉及到的常用Python库的使用。对于一般的网页可以很顺利地完成数据抓取工作,最多多花点时间。但是对于另一些平台,处于一些原因,会对数据的请求进行限制(反爬措施),如增加验证码,给内容加密,限制用户和IP访问的频率等等,所以实际数据抓取的难点在于反反爬hh,如
- 平台数据宝贵或者涉及安全利益等等,不能免费共享
- 请求过于频繁会对平台的服务器造成较大的压力(频繁的I/O),造成额外的资源开销
学习参考
掌握了基本的网页知识和抓取工具用法之后就可以试着抓取一些数据,实践上手是学习最快的方式,尤其是被迫不得不自己动手的时候hh
我个人学习爬虫是断断续续的,一开始主要是看的这位大佬的书籍《Python3网络爬虫开发实战》jd和网站博客,先是把书看了个大概,了解网页的一些基础和工具基础,再模仿着书上的案例。然后是在工作实践中组里时长有这方面的需求,自己就不得不上手写并调试(这个过程中还需要不断地翻看别人写的博客和文档),从一些最简单的网页到复杂一些的页面,慢慢熟悉基本的抓取工具和思路。
现在常规网站的数据抓取已经不成问题,多花点时间能搞定。但对于反爬比较厉害的网站则还不行(需要购买账号IP代理池等才能顺利抓取)。
一些常用的参考
request文档:requests
BeautifulSoup文档:bs4
Selenium文档:Selenium
Scrapy文档:Scrapy
崔庆才个人爬虫站点:https://cuiqingcai.com/
补充
普通网页的url提取:一些数据下载网页或者单个页面都会提供数据下载url,如果数量太大,也可以借助代码来完成(最简单的爬虫程序]),或者我们已经获取到了url,只是想批量下载并保存重命名文件,也是ok的。
- 当然,很多时候如果是浏览器的话实际上有很多可用的插件,比如这里推荐一个我一直在用的chrome插件Simple mass downloader,以及这个更高级一点的免费抓取工具webscraper,提供了chrome插件,之前我用过,它可以同来实现多个网页的复杂的抓取,而且不需要写代码,按钮点击式
API接口式抓取:比如高德开放平台提供的poi搜索,就把接口都给用户准备好了,我们只需要按流程申请key,再按照自己的需求输入参数,就可以发起请求获取poi的结果,即按要求构建url发送请求,平台服务器端会自动返给我们json数据
- 如请求的url:https://restapi.amap.com/v5/place/text?parameters
- 最终的输入实际大致会是:...place/text?key={...}&types=120000&....
- 然后通过代码批量自动完成该过程