Scrapy-redis爬取51Job数据

本文介绍了使用Scrapy-redis爬虫框架抓取51Job网站数据的过程,包括安装模块、页面分析、配置Scrapy、编写spider和item,以及在运行中遇到的scrapy与scrapy-redis的兼容性问题、redis操作注意事项和日志存储的重要性。
摘要由CSDN通过智能技术生成

Scrapy-redis爬取51Job数据

一、工具

  • python3
  • scrapy-redis
  • redis

二、准备工作

(一)安装各个模块

项目中使用到工具主要是Python3和Redis,且需要安装相应的python模块,即scrapy、scrapy_redis、redis等。

具体安装流程可以百度一下。

(二)页面分析

1、关键字页面

51job有一个页面https://jobs.51job.com/,其中有全部招聘职位关键字的搜索结果页链接,因此,只要获取该页面中所有招聘职位的链接,再逐一使用scrapy进行爬取即可。

在这里插入图片描述

该项具体获取方式比较简单,提取出数据存为列表即可。

2、搜索结果页

在搜索结果页中,有每一项招聘信息的职位名、公司名、地址、薪资、学历要求、经验要求、公司性质、公司规模、职位描述,这些信息在详情页中也有,但在这一页中结构更加清晰。

在这里插入图片描述

3、职位详情页

除去搜索结果页获取的数据之外,该页可以获取职位标签与行业两项信息。

在这里插入图片描述

Scrapy配置
  • 新建项目,在控制台中cd到对应的目录下后输入:
scrapy startproject 项目名
  • 新建爬虫,进入爬虫目录后输入
scrapy genspider 爬虫名 "目标网站"
  • setting设置
#默认配置
BOT_NAME = 'JobSpider_51'
SPIDER_MODULES = ['JobSpider_51.spiders']
NEWSPIDER_MODULE = 'JobSpider_51.spiders'

"""
Scrapy_Redis配置信息
""" 

#指定scrapy-redis的调度器
SCHEDULER = 'scrapy_redis.scheduler.Scheduler'

#指定使用scrapy-redis进行去重
DUPEFILTER_CLASS = "scrapy_redis.dupefilter.RFPDupeFilter"

# 指定排序爬取地址时使用的队列,
# 默认的 按优先级排序(Scrapy默认),由sorted set实现的一种非FIFO、LIFO方式。
SCHEDULER_QUEUE_CLASS = 'scrapy_redis.queue.FifoQueue'

# 在redis中保持scrapy-redis用到的各个队列,从而允许暂停和暂停后恢复,也就是不清理redis queues
SCHEDULER_PERSIST = True

"""
注意:上面四项配置后,可能导致无法使用scrapy shell,具体原因没有深究, 大致为scrapy-redis和scrapy的版本存在不兼容问题
"""

# Redis数据库配置
REDIS_HOST = '127.0.0.1'
REDIS_PORT = 6379

# Obey robots.txt rules
ROBOTSTXT_OBEY = False

#配置pipelines,值越小优先级越高
ITEM_PIPELINES = {
   
   'JobSpider_51.pipelines.Jobspider51Pipeline': 300,
   'scrapy_redis.pipelines.RedisPipeline': 299,
}

三、主程序

(一)spider

import re
import time
import json
import scrapy
import logging
from scrapy_redis.spiders import 
  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值