python爬取凤凰新闻网_python3.6爬取凤凰网新闻-爬虫框架式思维

本文介绍了Python爬虫的框架式思维,包括爬虫调度器、URL管理器、网页下载器、网页解析器和数据存储器五大模块。以凤凰新闻网为例,详细阐述了各模块的功能和实现,通过实例代码展示了如何使用requests和BeautifulSoup进行网页抓取和解析,最终将数据存储为JSON文件。
摘要由CSDN通过智能技术生成

一、序言

先前几篇爬虫的代码,是简单的脚本代码。在爬取小网页觉得挺简单、高效,但涉及复杂网页的时候,就要考虑成熟的爬虫框架与分布式。本篇博客作为无框架式爬虫和有框架式爬虫的一个过渡,介绍具有框架式思维的爬虫^_^。

二、框架结构图

ff9dcdfbb4217076c2ae468b1091a9d8.png

通常爬虫分为五个部分,分别为:爬虫调度器、URL管理器、网页下载器、网页解析器与数据存储器。各部分的作用如下:

爬虫框架模块作用说明

模块名称作用

爬虫调度器统筹调度其他四个模块之间的协调工作,可以理解为爬虫框架的司令部。

URL管理器管理URL链接,维护新URL集合(未爬取的链接)与旧URL集合(已爬取的链接);

同时提供获取新URL链接的接口。

网页下载器从URL管理器中获取未爬取的链接,并下载网页。

网页解析器将网页下载器下载的网页进行解析,从中提取新的链接给URL管理器,将提取的有效数据返回给数据存储器。

数据存储器将网页解析出的有效数据进行存储。

三、物种管理器介绍

通常写爬虫,我们先分析url,写出url管理器模块;然后写网页下载器,这个比较简单;根据url网页内容写出网页解析器模块;根据解析器的有效数据类型,选择合适的存储方式文件或者数据库。

(一)URL管理器

该模块主要维护两个变量:以爬取的URL集合和未爬取的URL集合。之所以选择集合是因为集合中元素不能重复的特点,这就给url进行了一个去重。

该模块的主要接口有:

判断是否有待取的URL,方法定义为has_new_url()。添加新的URL到未爬取的集合中,方法定义为:add_new_url(url),add_new_urls(urls)。获取未爬取的URL,方法定义为get_new_url()。获取未爬取的URL集合大小,方法定义为new_url_size()。获取已爬取的URL集合大小,方法定义为old_url_size()。

(二)网页下载器

该模块主要用到的库为requests,当然大家也可以根据自己需要选择urllib库等。具有的接口为:download(url)。

(三)网页解析器

用于解析的库主要用到BeautifulSoup、lxml等。提供一个parser对外的接口。

(四)数据存储器

数据存储器主要包括两个方法:store_data(data)用于将解析出来的有效数据存储到内存;output_html()用于将存储的数据输出到指定的文件或者数据库。

(五)爬虫调度器

该模块首先要初始化其他四个模块,通过crawl(root_url)方法将起始链接传入URL管理器,然后按照调度器流程执行各个模块,协调工作。

四、实战演示

介绍了爬虫框架基本的结构以及每个模块的作用和基本方法,我们拿一个网站实战演练下。选取的网站为凤凰网站的任意一个新闻链接(链接为文本,不能为视频和图片),提取其新闻标题和内

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值