前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >简单使用了下scrapy爬虫工具

简单使用了下scrapy爬虫工具

作者头像
efonfighting
发布2019-12-24 12:05:31
6040
发布2019-12-24 12:05:31
举报
文章被收录于专栏:一番码客一番码客

本文目录

前言

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

前言

前天一番写了《用爬虫看看我们工作的”前途“》,里面收集了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的深入文章。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-12-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 一番码客 微信公众号,前往查看

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

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

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