目标捉取网页外链,递归循环实现。
一 遍历单个域名
网页爬虫,就是对目标网页进行捉取,然后遍历到数据信息,然后有链接的继续遍历,如此回调。
第一步:将页面的所有链接获取
运行效果图
发现会存在些没用用的数据,有些href的值只是作为页面块的跳转,我们可以使用正则表达式进行优化过滤掉,只获取带有HTML结尾的链接
第二步:递归获取网页
第一步我们基本把一个网页的所有链接地址获取到,第二步显然是获取这些链接网页的链接,进一步获取这些网页数据。
例如我们在Wiki获取Python词条下面的相关词条的链接,由于存在不是我们关心的链接,所有需要正则表达式过滤掉一部分,然后大量的链接的链接的链接,我们不可能穷尽,所有随机获取一些词条。
运行结果(一分钟150条数据产生,如非手动停止应该不会停止爬取)
二 采集整个网站
对整个站点进行所有链路采集,当然像wiki这些大型网站数据很多,要全部采集基本不可能。
运行结果
递归爬取网页原理:
三 采用Scrapy采集
高楼大厦都是从最简单的一砖一瓦叠起来,写网络爬虫也是很多简单的重复的操作组成,找到页面的关键信息和外链,然后再如此循环。而Scrapy库,可以大幅度降低网页链接查找(不用自己去搞一大堆的过滤条件和正则表达式)还可以降低识别的工作复杂度。
使用参考;https://scrapy-chs.readthedocs.io/zh_CN/latest/intro/tutorial.html
第一步 创建Scrapy项目
报错,安装scrapy,cmd-pip install scrapy
报错,没有安装visual 14
重新安装成功,再次执行
scrapy startproject tutorial
创建成功后,目录结构如下
第二步 定义数据源,修改item(参考官网)
第三步 创建爬虫class(参考官网)
第四步 进入spider目录,然后运行爬虫
报错,缺少win32库
pip install pywin32
再次运行成功
第一个Scrapy的helloworld基本完成,这个过程大致如下:
Scrapy为Spider的 start_urls 属性中的每个URL创建了 scrapy.Request 对象,并将 parse 方法作为回调函数(callback)赋值给了Request。
Request对象经过调度,执行生成 scrapy.http.Response 对象并送回给spider parse() 方法。
如有用到,后面继续深入学习Scrapy。
外,本人还有初学者的教程,免费送给大家,在公众号里,直接关注获取吧,谢谢