【day 4】Scrapy安装及基本使用

Scrapy的安装

1. Windows下安装流程:

方法一: 命令行执行pip install scrapy 安装scrapy

注意:如果有miniconda,也可以打开“Anaconda prompt”,激活环境以后使用命令:conda install scrapy

方法二:当遇到lxml报错信息,可以进入非官方安装包下载对应版本的lxml.whl文件。其它依赖包缺失错误,或者不兼容错误,也可以下载对应的.whl文件,使用pip install 文件地址+文件名的方式安装

2. Mac系统安装流程:

可以直接使用pip install scrapy进行安装
如果没有安装pip,可是使用以下命令行语句先安装pip:

curl https://bootstrap.pypa.io/get-pip.py | python3

Scrapy爬虫的使用

一个基本的爬虫只需要两部分组成:Spider(爬虫)、Pipeline(管道)。

Spider是什么?

Spider类定义了如何爬取某个(或某些)网站,包括了爬取的动作(例如:是否跟进链接)以及如何从网页的内容中提取结构化数据(爬取item)。 换句话说,Spider就是定义爬取的动作及分析某个网页(或者是有些网页)的地方。

管道是什么?

每个项目管道组件是一个实现简单方法的Python类。他们接收一个项目并对其执行操作,还决定该项目是否应该继续通过流水线或被丢弃并且不再被处理。

管道的作用

Item管道的主要责任是负责处理有蜘蛛从网页中抽取的Item,它的主要任务是清洗、验证和存储数据。当页面被蜘蛛解析后,将被发送到Item管道,并经过几个特定的次序处理数据。

项目管道的典型用途是:

  • 清理HTML数据
  • 验证抓取的数据(检查项目是否包含特定字段)
  • 检查重复(并删除)
  • 将刮取的项目存储在数据库中

第一个Scrapy项目

  1. 在命令行输入scrapy startproject city_58,建立Scrapy项目,提示如图即成功。

    《【day 4】Scrapy安装及基本使用》 image.png

  2. 得到如图的文件目录结构 《【day 4】Scrapy安装及基本使用》 image.png

  3. scrapy框架文件解析:

    • city_58/:该项目的python模块。之后您将在此加入代码
    • city_58/spiders/:放置spider代码的目录,在命令行使用“scrapy genspider + 爬虫名”生成的 – – spider文件将会被存放在此目录下
    • city_58/items.py:项目中的item文件
    • city_58/pipelines.py:项目中的pipelines文件
    • city_58/settings.py:项目的设置文件
    • scrapy.cfg:项目的配置文件,一般不需要修改,也不能删除
  4. 在cmd中切换到city_58文件中,输入“scrapy genspider spider_city_58 58.com”,在spider下面生成spider_city_58文件,代码如下:

# -*- coding: utf-8 -*-
import scrapy

class SpiderCity58Spider(scrapy.Spider):
    name = 'spider_city_58'    #必不可少的属性,需要利用它去决定启动哪个爬虫
    allowed_domains = ['58.com']   
    start_urls = ['http://58.com/']   #从start_urls中启动链接 

    def parse(self, response):
        pass

Scrapy的基本方法和属性:

  • 爬虫名称:name属性
  • 启动方法:start_requests(),或者直接使用start_urls启动
  • 默认解析器方法:parse()
  • 启动链接列表:start_urls属性

我们使用Scrapy的启动命令的时候,需要知道它的name属性,利用name属性去决定启动那个爬虫。如本例中爬虫名字是“spider_city_58”,则可以在命令行中使用:scrapy crawl spider_city_58 启动这个爬虫

爬虫默认首先从start_urls里面读取链接,然后自动调用start_request函数(或者你也可以自己定义start_request函数),此函数请求的结果自动调用默认解析器parse,也就是调用parse处理返回来的response

  1. 启动Scrapy框架
    为了方便知道请求到达了默认解析器parse,可以在解析器中输出一句话“我进入了解析器”
# -*- coding: utf-8 -*-
import scrapy

class SpiderCity58Spider(scrapy.Spider):
    name = 'spider_city_58'
    allowed_domains = ['58.com']
    start_urls = ['http://58.com/']

    def parse(self, response):
        print('我进入了解析器')

启动方法:
第一种方法:打开命令行,切换到项目目录下,执行scrapy crawl spider_city_58

第二种方法:在项目中建立一个main.py文件,然后运行该文件即可。

from scrapy import cmdline
cmdline.execute("scrapy crawl spider_city_58".split())

    原文作者:jesn
    原文地址: https://www.jianshu.com/p/2c2d4e83cbe6
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞