说了好几天用requests进行网络爬虫编程了,是时候换成专业,高效率的爬虫库--Scrapy了。我之所以一开始用requests,就想告诉你,网络爬虫,方法挺多的,合适就行。还有在之前说的各种解析库,在Scrapy中,也会经常用到,特别是Lxml的XPath。如果之前不说,留到现在还得说。
Scrapy,Python开发的一个快速、高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据。Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试.
在windows下安装Scrapy,用pip install Scrapy命令即可;在macOS下则用pip3 install Scrapy,如果网络正常,安装一般不会出现什么问题的。如果有什么问题的话,就按提示进行排查修护就好。真的不难的。
7.1 Scrapy的核心
Scrapy吸引人的地方在于它是一个框架,任何人都可以根据需求方便的修改。它也提供了多种类型爬虫的基类,如BaseSpider、sitemap爬虫等,最新版本又提供了web2.0爬虫的支持.
Scrapy框架主要由五大组件组成,它们分别是:
调度器(Scheduler):从队列里获取下一步要抓取的网址,自动去除重复的。用户可以自己定制调度器;
下载器(Downloader):用基于twisted这个高效的异步模型,高速下载网络上的资源,简单易用。
爬虫(Spider):爬虫,是用户最关心的部分。用户定制自己的爬虫(通过定制正则表达式等语法),用于从特定的网页中提取自己需要的信息,即所谓的实体(Item)。 用户也可以从中提取出链接,让Scrapy继续抓取下一个页面。
实体管道(Item Pipeline):用于处理爬虫(spider)提取的实体。主要的功能是持久化实体、验证实体的有效性、清除不需要的信息。
Scrapy引擎(Scrapy Engine):整个框架的核心,用来控制调试器、下载器、爬虫。实际上,引擎相当于计算机的CPU,它控制着整个流程。
7.2 Scrapy建项目
打开命令行窗口(终端),输入:scrapy startproject storybook 新建项目,用cd命令,进入到storybook目录下,输入scrapy genspider story http://seputu.com/ 生成爬虫的基础代码。
用PyCharm打开storybook项目,在spiders目录里,新建main.py文件。相关文件的作用概述如下:
scrapy.cfg: 项目的配置文件;
items.py: 定义爬虫字段信息;
pipelines.py: 要作为爬虫数据的处理,过滤和保存数据(到数据库等);
settings.py: 项目的设置文件。
spiders: 存储爬虫代码目录。
.3 Scrapy爬小说
为了更好地理解Scrapy和之前的方式有什么不同,我们还是爬《盗墓笔记》,就爬第1页的详细页。页面详细内容分析,标题节点是在div.bg > h1的
里面,文章的内容节点是在div > div.content里的
标签里面。
1. 定义爬取内容
打开items.py文件,定义数据结构。一个标题,一个内容。
2. 实现爬取功能
打开story.py文件,输入如下代码,核心的内容在parse方法里面,response为返回的html内容,解析用的方法,跟之前的并没有什么不同。
3. 数据保存到文件
打开pipelines.py文件,将数据内容保存到txt文件中,怎么方便怎么来。
4. 指定处理文件
打开settings.py文件,进行相关参数配置,记得以下参数加进去。
5. 让爬虫跑起来
运行story项目,有两个方法,一个是在命令行窗口输入:scrapy crawl story运行。一个是新建main.py文件,并输入如下代码。至于用哪一种,你喜欢就好。我选择main.py,是因为方便在PyCharm查看和调试。
好了,运行main.py文件之后,就会在spiders目录下,生成一个名叫《七星鲁王 第一章 血尸.txt》的文件,打开便可见到你喜欢的小说内容。
好了,有关Scrapy爬小说的内容,老陈讲完了,如果觉得对你有所帮助,希望老铁能转发点赞,让更多的人看到这篇文章。你的转发和点赞,就是对老陈继续创作和分享最大的鼓励。一个当了10年技术总监的老家伙,分享多年的编程经验。想学编程的朋友,可关注今日头条:老陈说编程。分享Python,前端(小程序)、App和嵌入式方面的干货。关注我,没错的。