简单使用了下scrapy爬虫工具

2019-12-24 12:05:31 浏览数 (1)

本文目录

前言

开发环境创建项目目录结构基本流程总结

前言

前天一番写了《用爬虫看看我们工作的”前途“》,里面收集了52job上在深圳的”前端“和”区块链“两个关键字的职位信息。

其实是因为一番想了解下相关职位在市场上的职位要求,而想到用爬虫去爬取相关信息,显然没有做完。因为一番在尝试用一个爬虫框架——scrapy,之前没有接触过,所以只是简单运用了下,几乎就是搭建环境和初步认识。

这篇文章就来介绍一下如何简单的使用scrapy爬虫工具来爬取一些简单的网页信息,获得格式化的数据。

开发环境

本文的开发环境,也是使用这个scrapy的以来环境如下。

  • 操作系统:windows10。
  • python3.7 pip3。
  • IDE:Visual Studio Code。

创建项目

在powershell简单执行如下几条命令,便可以实现项目的创建。

  • 安装scrapy开发环境。 其中-i https://pypi.tuna.tsinghua.edu.cn/simple是重定向下载源,这里定向的国内清华的源,会加快下载速度,否则奇慢难忍。 pip3 install scrapy -i https://pypi.tuna.tsinghua.edu.cn/simple
  • 创建scrapy工程 scrapy startproject zhaopin
  • 创建爬虫实例 scrapy genspider 51job www.51job.com
    • 51job是实例名,会在spider目录下创建一个同名.py文件。因为文件名不能以数字开头,会默认加个a的前缀。
    • www.51job.com,是爬虫允许请求的域名地址。
  • 执行爬虫 scrapy crawl 51job
    • 51job就是我们刚刚创建的爬虫实例。
    • 也就是说我们可以用scrapy genspider命令创建任意多个爬虫实例,然后用scrapy crawl命令来执行任意一个存在的实例。

目录结构

代码语言:javascript复制
├── scrapy.cfg            // 项目的配置文件。
└── zhaopin                // 该项目的python模块。之后您将在此加入代码。
    ├── items.py        // 项目中的item文件。
    ├── middlewares.py    // 爬虫中间件。
    ├── pipelines.py    // 项目中的pipelines文件。
    ├── settings.py        // 项目的设置文件。
    └── spiders            // 放置spider代码的目录。

基本流程

查看a51job.py文件。

代码语言:javascript复制
# -*- coding: utf-8 -*-
import scrapy


class A51jobSpider(scrapy.Spider):
    name = '51job'
    allowed_domains = ['www.51job.com']
    start_urls = ['http://www.51job.com/']

    def parse(self, response):
        pass

当我们执行scrapy crawl 51job时:

  • scrapy为Spider的 start_urls 属性中的每个URL创建了 scrapy.Request对象,并将 parse 方法作为回调函数(callback)赋值给了Request。
  • Request对象经过调度,执行生成 scrapy.http.Response对象并送回给spider parse()方法。
  • 也即,parse函数中respose便是start_urls中请求回来的结果。

总结

好了,以上便可以完整的看到从scrapy项目创建到运行的各个步骤,以及运行时的基本运作流程。

便算是可以通过这个简单的步骤,可以实现用scrapy抓取想要下载页面的内容了。

随着一番实际使用的深入,后面还会继续写一些scrapy的深入文章。

0 人点赞