Python爬虫入门 ~ scrapy安装使用

358 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第30天,点击查看活动详情

scrapy

简介

Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。

安装

这里注意要使用国内的源,不指定的话经常会超时中断。我这里使用的是Pycharm来安装的,他会自动帮我们把其它相关的依赖都安装上,如果直接使用命令行来安装可能会报一些依赖错误,那就需要根据提示去安装完前置依赖再来安装该库。

pip install scrapy -i https://pypi.douban.com/simple

image.png

基本使用

1. 创建项目

安装完scrapy之后,在命令行输入startproject加上项目名称即可自动生成一个项目。

scrapy startproject 项目名称

2. 项目组成

├ spiders
├---- __init__.py
├---- 自定义的爬虫文件.py    =>> 自己编写实现爬虫核心功能的文件
├ __init__.py
├ items.py                   =>> 定义数据结构的地方,继承自 scrapy.Item类
├ middlewares.py             =>> 中间件 代理
├ pipelines.py               =>> 管道文件,用于处理下载数据的后续处理,默认300,数值越小优先级越高(1-1000)
└ settings.py                =>> 配置文件,robots协议,User-Agent等定义

image.png

3. 创建爬虫文件

上面生成完一个项目之后,有一个自定义爬虫文件由我们自己实现,具体的创建步骤如下:

  1. 进入到spiders目录
cd ./文件路径/文件路径/spiders
  1. 生成文件
scrapy genspider 爬虫名字 网站的域名(注意不要携带http等协议头)

image.png

  1. 文件组成
import scrapy

# 继承scrapy.Spider类
class BaiduSpider(scrapy.Spider):
    # 运行爬虫文件时使用的名字
    name = 'baidu'
    # 爬虫允许的域名,不在此域名下的连接会被过滤
    allowed_domains = ['www.baidu.com']
    # 申明起始地址
    start_urls = ['http://www.baidu.com/']

    # response:解析数据的回调函数
    #     response.text 响应的字符串
    #     response.body 响应的二进制文件
    def parse(self, response):
        pass

image.png

4. 运行

项目搭建好了,爬虫文件也生成了,那么该来尝试下运行效果了

scrapy crawl 爬虫名字

image.png

第一次运行不成功,并没有走到我们自定义的爬虫文件中,还提示了一个带robots.txt的网址,这个是一个君子协议,限制爬取范围的。

我们可以在settings.py文件中将该协议的控制开关关闭

# Obey robots.txt rules
ROBOTSTXT_OBEY = False

image.png

image.png 关闭之后可以看到能正常的执行到我们自定义的逻辑部分了。