爬虫框架Scrapy实战之批量抓取招聘信息

本文介绍了如何使用Python爬虫框架Scrapy从腾讯招聘官网抓取招聘信息并保存为JSON格式。首先创建Scrapy项目,定义Item结构,接着实现Spider类抓取网页并解析内容,最后通过Pipeline将数据持久化。通过运行爬虫,得到包含职位详情的JSON文件。
摘要由CSDN通过智能技术生成

所谓网络爬虫,就是一个在网上到处或定向抓取数据的程序,当然,这种说法不够专业,更专业的描述就是,抓取特定网站网页的HTML数据。不过由于一个网站的网页很多,而我们又不可能事先知道所有网页的URL地址,所以,如何保证我们抓取到了网站的所有HTML页面就是一个有待考究的问题了。一般的方法是,定义一个入口页面,然后一般一个页面会有其他页面的URL,于是从当前页面获取到这些URL加入到爬虫的抓取队列中,然后进入到新页面后再递归的进行上述的操作,其实说来就跟深度遍历或广度遍历一样。
Scrapy是一个基于Twisted,纯Python实现的爬虫框架,用户只需要定制开发几个模块就可以轻松的实现一个爬虫,用来抓取网页内容以及各种图片,非常之方便~
Scrapy 使用 Twisted这个异步网络库来处理网络通讯,架构清晰,并且包含了各种中间件接口,可以灵活的完成各种需求。整体架构如下图所示:
在这里插入图片描述
绿线是数据流向,首先从初始URL 开始,Scheduler 会将其交给 Downloader 进行下载,下载之后会交给 Spider 进行分析,Spider分析出来的结果有两种:一种是需要进一步抓取的链接,例如之前分析的“下一页”的链接,这些东西会被传回 Scheduler ;另一种是需要保存的数据,它们则被送到Item Pipeline 那里,那是对数据进行后期处理(详细分析、过滤、存储等)的地方。另外,在数据流动的通道里还可以安装各种中间件,进行必要的处理。
我假定你已经安装了Scrapy。假如你没有安装,你可以参考这篇文章。
在本文中,我们将学会如何使用Scrapy建立一个爬虫程序,并爬取指定网站上的内容

  1. 创建一个新的Scrapy Project
  2. 定义你需要从网页中提取的元素Item
    3.实现一个Spider类,通过接口完成爬取URL和提取Item的功能
  3. 实现一个Item PipeLine类,完成Item的存储功能
    我将会用腾讯招聘官网作为例子。
    Github源码:https://github.com/maxliaops/scrapy-itzhaopin
    在这里插入图片描述
    目标:抓取腾讯招聘官网职位招聘信息并保存为JSON格式。
    新建工程
    首先,为我们的爬虫新建一个工程,首先进入一个目录(任意一个我们用来保存代码的目录),执行:
    scrapy startprojectitzhaopin
    最后的itzhaopin就是项目名称。这个命令会在当前目录下创建一个新目录itzhaopin,结构如下:
    ├── itzhaopin
    │ ├── itzhaopin
    │ │ ├── init.py
    │ │ ├── items.py
    │ │ ├── pipelines.py
    │ │ ├── settings.py
    │ │ └── spiders
    │ │ └── init.py
    │ └── scrapy.cfg
    scrapy.cfg: 项目配置文件
    items.py: 需要提取的数据结构定义文件
    pipelines.py:管道定义,用来对items里面提取的数据做进一步处理,如保存等
    settings.py: 爬虫配置文件
    spiders: 放置spider的目录
    定义Item
    在items.py里面定义我们要抓取的数据:
from scrapy.item import Item, Field
class TencentItem(Item):
    name = Field()                # 职位名称
    catalog = Field()             # 职位类别
    workLocation = Field()        # 工作地点
    recruitNumber = Field()       # 招聘人数
    detailLink = Field()          # 职位详情页链接
    publishTime = Field()         # 发布时间

实现Spider
Spider是一个继承自scrapy.contrib.spiders.CrawlSpider的Python类,有三个必需的定义的成员
name: 名字,这个spider的标识
start_urls:一个url列表,spider从这些网页开始抓取
parse():一个方法,当start_urls里面的网页抓取下来之后需要调用这个方法解析网页内容,同时需要返回下一个需要抓取的网页,或者返回items列表
所以在spiders目录下新建一个spider,tencent_spider.py:

import re
import json
from scrapy.sele
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值