初识scrapy

Scrapy是一个用于爬取web站点并提取结构化数据的应用框架,通常我们称之为爬虫,一款优秀的python爬虫。

scrapy爬取的数据可被用在数据挖掘、信息处理、历史数据归档等非常广泛的数据分析和处理领域。
我们可以通过一个简单的例子来初步了解一下如何通过scrapy蜘蛛(spider)爬取web页面。
import scrapy
class QuotesSpider(scrapy.Spider): name = 'quotes' start_urls = [ 'http://quotes.toscrape.com/tag/humor/', ]
def parse(self, response): for quote in response.css('div.quote'): yield { 'author': quote.xpath('span/small/text()').get(), 'text': quote.css('span.text::text').get(), }
next_page = response.css('li.next a::attr("href")').get() if next_page is not None: yield response.follow(next_page, self.parse)
将这段代码保存为quotes_spider.py。
然后执行以下命令:
scrapy runspider quotes_spider.py -o quotes.json
或者:
python -m scrapy runspider quotes_spider.py -o quotes.json
执行完毕后,我们得到输出文件quotes.json。
其内容为如下的json字符串:
[{ "author": "Jane Austen", "text": "\u201cThe person, be it gentleman or lady, who has not pleasure in a good novel, must be intolerably stupid.\u201d"},{ "author": "Groucho Marx", "text": "\u201cOutside of a dog, a book is man's best friend. Inside of a dog it's too dark to read.\u201d"},{ "author": "Steve Martin", "text": "\u201cA day without sunshine is like, you know, night.\u201d"},...]
可以看到,每个项目包含两个字段:
author和text。

我们现在来分析一下上边这段代码的执行过程。

  • 当运行scrapy runspider quotes_spider.py这个命令后,scrapy会从quotes_spider.py这个脚本加载其中定义的一个spider,并在爬虫引擎中执行这个spider定义的一些方法。

  • 爬虫引擎首先打开start_urls中定义的链接(http://quotes.toscrape.com/tag/humor/),成功后会调用默认的回调函数parse,将响应消息response作为参数传入parse函数。

  • parse回调函数使用css选择器选取并循环遍历response中的quote对象,从中提取中author和text字段。并查找页面中的next标签,以确定是否继续使用同样的方法爬取和解析“下一页”。

你应该已经注意到了使用scrapy的好处:页面请求是由scrapy异步地进行调度和处理的。
这意味着scrapy不需要等待某个请求的完成和处理,它可以同时发送其他请求或者执行其他业务。同样,某个请求失败或异常也不影响其他请求的执行。
除了可以快速爬取页面,scrapy还提供了一些配置项,用来调控爬取行为。我们可以设置请求间的间隔,可以控制每个域名或每个ip的并发请求数,这样使得爬取行为看起来不那么“粗暴”。scrapy甚至提供了扩展程序以自动调整这些参数。
当然,作为一个强大的爬虫框架,scrapy提供的功能远不止此。
  • 内置增强的css选择器和xpath表达式,用来选取和解析html和xml文件,支持使用正则表达式。
  • 提供一个交互式shell控制台,方便编写和调试spider。
  • 内置多种数据输出格式(json、csv、xml),并可将数据存储在多种后端系统(ftp、s3、本地文件系统)。
  • 支持页面编码自动检测
  • 丰富的插件,可用于处理cookies/session,支持http压缩、鉴权和缓存等特性,仿造user-agent等。
总的来说,用python做爬虫,基本绕不开scrapy。我们一起学习吧。
(0)

相关推荐

  • scrapy终端常用命令

    scrapy命令行 一.默认的scrapy项目结构 scrapy.cfgmyproject/    __init__.py    items.py    pipelines.py    setting ...

  • 干货!一文教会你 Scrapy 爬虫框架的基本使用

    原创 投稿君 Python数据之道 收录于话题 #读者投稿 28 #Python干货分享 2 #Python 11 #项目实战 20 出品:Python数据之道 (ID:PyDataLab) 作者:叶 ...

  • Python Scrapy中文教程,Scrapy框架快速入门!

    谈起爬虫必然要提起 Scrapy 框架,因为它能够帮助提升爬虫的效率,从而更好地实现爬虫. Scrapy 是一个为了抓取网页数据.提取结构性数据而编写的应用框架,该框架是封装的,包含 request ...

  • 爬虫框架Scrapy(1)Scrapy基础1

    一. Scrapy框架简介 Scrapy是一个使用Python语言(基于Twisted框架)编写的开源网络爬虫框架,目前由 Scrapinghub Ltd 维护.Scrapy 简单易用.灵活易拓展.开 ...

  • 以『B站』为实战案例!手把手教你掌握爬虫必备框架『Scrapy』

    以『B站』为实战案例!手把手教你掌握爬虫必备框架『Scrapy』

  • 【实战视频】使用scrapy写爬虫-爬知乎live

    我其实很喜欢造轮子,一直没用过爬虫框架写爬虫.虽然知道爬虫很简单,scrapy框架也不难,但是在舒适区呆久了,真的不想学新东西,用新知识写爬虫. 今天我不止用新框架scrapy写爬虫,而且我还要使用s ...

  • 初识scrapy爬虫框架

    框架是为了解决特定的业务场景而开发的一套高质量代码,通过框架避免了重复造轮子的低效模式,可以更加专注于具体业务相关的代码.在python中,scrapy就是一个主流的爬虫框架,可以通过如下方式进行安装 ...

  • 初识宜兴紫砂陶优势(桑黎兵、朱霞琴)

    "茗注者,莫妙于砂:壶精者,莫过于阳羡."明代杰出戏曲小说家李渔如是所云.这并非空穴来风. 中国历来就是茶的民族,茶道深入寻常百姓之家随处可见,而宜兴紫砂陶天生特有的"宜 ...

  • 【蒙以养正】初识古人的儿歌-第1集《小儿语》节要

    传统育儿经 1篇原创内容 公众号 初识古人的儿歌-第1集| 開吉法師主講 2019/12/21 视频学习: 课程全文: <小兒語>這部書,我們先來了解一下它的作者.它的作者是呂得勝,呂得勝 ...

  • 太极拳五行合一功,让人初识前进、后退、左顾、右盼、中定

    五行合一功,是根据古传<太极拳释名>一文:「前进.后退.左顾.右盼.中定」的论述编创的,乃心性太极拳(心性太极拳功道)--心性太极学之太极功体系中的入门功夫.属太极拳基本功范畴,适合太极拳 ...

  • 队前教育|你好,少先队——初识“六知六会一做”

    队前第一课 少先队"六知六会一做"的知识 六知 1 知道少先队的队名 中国少年先锋队(简称"少先队")是中国少年儿童的群众组织,是少年儿童学习中国特色社会主义和 ...

  • 初识屏蔽泵(一)

    一.屏蔽泵的工作原理 1.屏蔽泵的工作原理与离心泵相同,由叶轮旋转产生离心力,使叶轮中的液体脱离叶轮,使速度能头变压力能头,起到输送介质的作用.屏蔽泵工作的关键就是利用电机定子与转子间的作用特点,转子 ...

  • 推荐初次聊天话术100句分享给大家,解决你们初识尬聊

    今天小橘子先生推荐初次聊天话术100句分享给大家,希望能够帮助到你们! 一.自来熟式聊天 在刚加上妹子微信的时候,自来熟可以让你的聊天少走很多的弯路,在最快的时间内和妹子消除陌生感,当陌生感消除,妹子 ...

  • 捞鱼 -(495)初识毛老师

    初识毛老师 毛老师,五十零几岁,夫人的姨表妹夫.他是学校教书育人的老师. 夫人有两位年迈的阿姨在南京,由于工作和生活的原因,好长好长时间想来南京探望,但总是挤不出时间,一晃已数十年没见面了.前几天,终 ...

  • 主力逻辑量化标准 005 初识量柱

    005 初识量柱--地量柱的意义:主力检验洗盘效果的密码,股价或将触底而起 昨天文章简介天量柱的意义,今天两市共有57只涨停,有10只是天量柱之后直接涨停的. 顺控发展七连板作为市场龙一,华通热力五连 ...