前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Scrapy1.4最新官方文档总结 1 介绍·安装安装

Scrapy1.4最新官方文档总结 1 介绍·安装安装

作者头像
SeanCheney
发布2018-04-24 10:29:21
8010
发布2018-04-24 10:29:21
举报

《Learning Scrapy》这本书是2016年1月出版的,作者使用的版本是Scrapy 1.0.3。

现在,Scrapy的最新版本是1.4。

Scrapy的图标是个小刮铲 :)

Scrapy文档的中文版现在还是1.0的:http://scrapy-chs.readthedocs.io/zh_CN/latest/intro/tutorial.html

官方文档更新自然是最快的:https://docs.scrapy.org/en/latest/intro/tutorial.html

官方案例现在使用网站http://quotes.toscrape.com作为抓取源。这个网站是GoodReads.com(特别好的书评网站,Kindle用户肯定熟悉)和Scrapinghub合作的。多说一句,Scrapinghub提供了几个有用的产品,如下:

Scrapy Cloud是一个有限免费的云平台,可以部署爬虫进行定时爬取(免费一个并发进程)。Scrapy官网推荐过Scrapy Cloud。

Crawlera是代理插件,《Learning Scrapy》书里用到过,那时还是免费的,现在是收费的了。

最简单的Scrapy例子:

import scrapy #命名为quotes_spider.py

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 {
                'text': quote.css('span.text::text').extract_first(),
                'author': quote.xpath('span/small/text()').extract_first(),
            }

        next_page = response.css('li.next a::attr("href")').extract_first()
        if next_page is not None:
            yield response.follow(next_page, self.parse)

运行这个爬虫,输出为json格式:

scrapy runspider quotes_spider.py -o quotes.json

会得到一个quotes.json文件,如下:

爬取步骤分析:

1向start_urls发出请求,将响应作为参数传递给调回方法parse;

2 用CSS选择器循环抓取名人名言。寻找下一页的链接,规划下一个请求。

可以看出Scrapy的优点:请求是经过规划,然后异步执行的。所以,Scrapy不用等待请求完成,就可以发出另一个请求。如果某个请求受阻,其它请求仍然可以执行。

这样的话,Scrapy爬取的速度就可以很快。控制爬取速度,可以通过设置两个请求的间隔时间、设置域名或ip的并发请求数、或使用自动阻塞插件(AutoThrottle extension)。

Scrapy的其它特点:

  • 内建的CSS选择器和XPath表达式
  • 基于IPython交互式shell,方便编写爬虫和debug
  • 内建的文件导出和保存方法,格式多样JSON、CSV、XML
  • 健壮的编码支持
  • 扩展性强,可以使用signals和API(中间件、插件、管道)添加自定义功能
  • 多种用于处理session、cookies、HTTP认证、user-agent、robots.txt、抓取深度限制的中间件和插件
  • Scrapy内建Telnet console,可用于debug

安装

Scrapy现在支持Python 2.7 和 Python 3.3以上的版本。最方便的就是用pip安装:

pip install Scrapy

如果用的是Anaconda环境,官网还介绍了conda安装方法:

conda install -c conda-forge scrapy

官方推荐的是使用虚拟环境,这样可以减少冲突,使用gitbash(这里使用win7的shell不能正常deactivate,使用gitbash没问题):

pip install virtualenv

新建一个虚拟环境:

virtualenv test1

激活这个虚拟环境:

source activate test1

这时再安装Scrapy:

pip install Scrapy

安装的包就存储在 ..\test1\Lib\site-packages中了。

退出这个环境:

source deactivate
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017.10.02 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 安装
相关产品与服务
消息队列 TDMQ
消息队列 TDMQ (Tencent Distributed Message Queue)是腾讯基于 Apache Pulsar 自研的一个云原生消息中间件系列,其中包含兼容Pulsar、RabbitMQ、RocketMQ 等协议的消息队列子产品,得益于其底层计算与存储分离的架构,TDMQ 具备良好的弹性伸缩以及故障恢复能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档