美文网首页爬虫
Scrapy快速入门

Scrapy快速入门

作者: 乔治大叔 | 来源:发表于2019-11-03 20:47 被阅读0次

    一、Scrapy 简介

    一个快速、高层次的屏幕抓取和web抓取的Python框架,用于抓取web站点并从页面中提取结构化的数据,可以用于数据挖掘、监测和自动化测试,可根据具体需求个性化定制。
    Scrapy架构图:


    架构图.png

    各组件介绍
    ENGINE

    引擎(engine)控制所有部件间的数据流,并在某些事件发生时触发事件

    Scheduler

    调度器(scheduler)接收来自引擎的request,并对它去重,放入到请队列中;并根据队列的取出规则,把请求按顺序返回给引擎

    Downloader

    下载器(Downloader)获取网页数据并返回给引擎

    Spiders

    爬虫(Spiders)用来解析response,提取出Items和新的Requests

    Item Pipeline

    对Items进行进一步的清洗,并持久化

    Downloader middlewares

    下载中间件可以勾住下载器和引擎之间的数据流,并对它们做一些处理,比如:

    在request送到下载器之前对它做一些处理,可以添加User_Agent,修改IP等
    对response做一些处理
    Spider middlewares

    爬虫中间件可以勾住爬虫和引擎之间的数据流,并对它们做一些处理

    二、安装scrapy

    pip install scrap

    当我们满怀欢喜安装的时候,发现:

    Command "/usr/bin/python2 -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-L1Q1wb/Twisted/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-QWsI2y-record/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /tmp/pip-build-L1Q1wb/Twisted/
    You are using pip version 8.1.2, however version 9.0.1 is available.
    You should consider upgrading via the 'pip install --upgrade pip' command.
    

    神马情况,好像是告诉我们需要使用:

    pip install --upgrade pip

    三、创建一个scrapy项目

    在开始爬取之前,我们首先要创建一个scrapy项目,在命令行输入一下命令即可创建

    scrapy startproject newspider

    scrapy startproject这里是固定的,注意scrapy和startproject和newspider中间是有空格的!后面的:newspider是我们创建的爬虫名字,后面我们运行的时候用得到,你需要根据你的情况创建,比如你是想爬取京东你可以这样创建:

    scrapy startproject jingdong

    如果你输入命令之后,出现了下面的显示:


    1571735704463.jpg

    恭喜你成功了,我们用pycharm打开查看


    1571735959675.jpg

    然后只需要再来两条命令就可以了

    cd jingdong
    scrape genspider jd www.jd.com

    1571735928435.jpg

    OK,成功的建好了一只爬虫


    1571735976577.jpg

    下面简单的配置下setting文件

    ROBOTSTXT_OBEY = True 改为False

    表示不需要遵守ROBOTS协议

    DEFAULT_REQUEST_HEADERS = {
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8',
    'Accept-Language': 'en',
    }

    headers的配置就在这里写

    ITEM_PIPELINES = {
    'jingdong.pipelines.JingdongPipeline': 300,
    }

    pipeline中间件,指的是jingdong根目录下,pipelines文件,JingdongPipeline类,300是优先级,值越少优先级越高

    其他的配置不需要太多的更改,默认就行了

    相关文章

      网友评论

        本文标题:Scrapy快速入门

        本文链接:https://www.haomeiwen.com/subject/kezqvctx.html