爬虫入门(九)爬虫总结----看懂爬虫要学什么

爬虫的基本结构很简单:

    下载页面(爬取)——>提取页面中的数据(抓取)——>提取页面中的链接——>下载链接页面

循环上述过程,直到页面全部下载、数据全部提取或者执行到开发者指定位置结束

起始环节——爬取页面

检查网站:robots.txt文件(规定本网站的爬虫规则,哪些可以爬,可以用什么爬)

                Sitemap文件(标注网站的资源内容,帮助爬虫定位网站的最新内容)

下载页面:

                方法一:urllib库(许多高级功能如用户代理、编码处理等需要手动编写入请求函数中)

                方法二:requests库 (封装的urllib库,自带许多高级功能,推荐使用)

                对于初学者最好先学习urllib工具,在使用requests库,这样对原理的理解更加深刻

第二环节——数据抓取

分析网站:分析网页的数据,锁定要抓取的数据目标

                辅助工具:浏览器开发者工具

                辅助知识:HTML语言

解析并匹配数据的三种方式:

                正则表达式re库

                Beautiful Soup:比较简单但速度较慢

                Lxml:较难但功能强大而且速度快,有CSS和XPath两种选择器

        正则表达式是必须会的内容,BeautifulSoup和Lxml可以帮助我们更轻松的抓取数据而且功能会更强大,这里推荐使用Lxml

第三环节——保存数据

使用缓存保存下载页面:以免重新爬取那些已经爬取过的页面
        方式一:直接以文件形势保存。url的路径映射为文件路径,页面名映射为文件名

        方法二:使用数据库。如MongoDB和Redis

        方法三:requests-cache库。当使用了requests-cache时,通过requests库访问的url都会见检查缓存,简化对缓存的操作

保存抓取的数据:

        保存到CSV表格、TXT格式、json文件都可以,这取决于你的数据是什么格式的

正常来讲以上三个步骤就可以抓取一些简陋的小网站了,还是有一些情况需要额外适配一些技术

并发下载:

        对于特别大的网站,正常爬取需要的时间太多时。可以采用多线程爬虫或者多进程多线程爬虫,以加快爬取速度

动态内容:

        对于采用了AJAX技术的网站,可能你想获取的内容是动态加载的,比如必须触发点击操作才会加载的内容,当你要爬取的数据是动态内容时,有以下方法可用:

        对动态网页进行逆向

        渲染动态网页:就是使用渲染引擎来让爬虫更像人类,可以执行点击等操作与网站交互

                                推荐使用Selenium库,该库简单并且支持有界面和无界面

验证码处理:

        光学字符识别(OCR):利用计算机处理验证码图像提取出文字

                推荐开源的Tesseract,该引擎有python的接口而且免费使用

        验证码处理服务:一些公司组织人工形式的验证码处理,提供收费服务

        机器学习帮助处理验证码:

当你学习了以上知识后,已经能自己编写爬虫爬取大部分网站了,但是爬虫还有一个十分流行的框架Scrapy可以帮助你更快的开发一个爬虫程序。

对Scrapy的学习是有必要的,它能简化我们的开发成本。

API:

有许多知名网站都有提供自己的API,当提供的API已经足够满足我们的数据需求时,使用API是最优的选择。

        

                            

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值