Python爬虫第十一课:Scrapy框架(2)——存储数据

本文介绍了如何使用Scrapy爬虫框架抓取职友集的招聘信息和豆瓣图书的评论数据,并详细讲解了创建项目、定义items、编写爬虫文件、存储数据到CSV和Excel,以及修改设置的步骤。通过实例展示了Scrapy在数据抓取和存储中的应用。
摘要由CSDN通过智能技术生成

在这里插入图片描述
在Scrapy的整个架构中,引擎是可以说有着最高的权利,管理着调度器、下载器、爬虫和数据管道四个重要的组成部分。

这四个组成部分都听命于引擎,一丝不苟的执行引擎下发的命令。
在这里插入图片描述
本次,我们使用Scrapy爬取职友集的招聘信息,让我们更加熟练的掌握Scrapy的用法。

一、明确目标

职友集可以通过索引的方式,搜索到全国上百家招聘网站的最新职位:https://www.jobui.com/rank/company/

我们要获取排行榜中的公司名称、招聘职位名称、工作地点和招聘要求。

二、代码实现

(1)创建项目

在命令行或终端中,cd到想要保存爬虫的目录下,输入创建scrapy项目的命令:scrapy startproject class14(名称可自定义)。

然后在蹦迪电脑的编译器中打开这个scrapy项目,如下所示:
在这里插入图片描述

(2)定义items

在items.py文件中,定义Items:

import scrapy

# 定义一个继承自scrapy.Item的Class14Item类
class Class14Item(scrapy.Item):
    # 定义公司名称的数据属性
    company = scrapy.Field()
    # 定义职位名称的数据属性
    position = scrapy.Field()
    # 定义工作地点的数据属性
    address = scrapy.Field()
    # 定义招聘要求的数据属性
    info = scrapy.Field()

(3)创建和编写爬虫文件

在spiders文件夹下创建爬虫文件,我们将它命名为Jobhui_Info。

import scrapy
import bs4
from ..items import Class14Item

# 定义爬虫类Jobhui_Info
class Jobhui_Info(scrapy.Spider):
    # 定义爬虫的名称
    name = 'Jobhui_Info'
    # 定义允许爬虫爬取网址的域名
    allowed_domains = ['www.jobhui.com']
    # 定义起始网址
    start_urls = ['https://www.jobhui.com/rank/company']

    def parse(self, response):
        # 使用beautifulsoup解析response
        bs = bs4.BeautifulSoup(response.text,'html.parser')
        # 提取1-10的公司,用find_all提取<ul class_="textList flsty cfix">标签
        ul_list = bs.find_all('div',class_='textlist flsty cfix')
        for ul in ul_list:
            a_list = ul.find_all('a')
            for a in a_list:
                # 提取出<a>标签的href属性的值,即公司id标识
                company_id = a['href']
                # 构造出包含公司名称和招聘信息的网址链接的list
                url = 'https://www.jobhui.com{}jobs'.format(company_id)           

接下来,我们要获取不同公司的招聘职位信息。

从这里开始,就需要重新构造新的requests对象和定义新的方法处理response。

import scrapy
import bs4
from ..items import Class14Item

# 定义爬虫类Jobhui_Info
class Jobhui_Info(scrapy.Spider):
    # 定义爬虫的名称
    name = 'Jobhui_Info'
    # 定义允许爬虫爬取网址的域名
    allowed_domains = ['www.jobhui.com']
    # 定义起始网址
    start_urls = ['https://www.jobhui.com/rank/company']

    def parse(self, response):
        # 使用beautifulsoup解析response
        bs = bs4.BeautifulSoup(response.text,'html.parser')
        # 提取1-10的公司,用find_all提取<ul class_="textList flsty cfix">标签
        ul_list = bs.find_all('div',class_='textlist flsty cfix')
        for ul in ul_list:
            a_list = ul.find_all('a')
            for a in a_list:
                # 提取出<a>标签的href属性的值,即公司id标识
                company_id = a['href']
                # 构造出包含公司名称和招聘信息的网址链接的list
                url = 'https://www.jobhui.com{}jobs'.format(company_id)
                # 用yield语句把构造好的request对象传递给引擎。
                # 用scrapy.Request构造request对象。callback参数设置调用parse_Jobhui_Info方法。
                yield scrapy.Request(url, callback=self.parse_Jobhui_Info)

    # 定义新的处理response的方法parse_Jobhui_Info
    def parse_Jobhui_Info(self,response):
        # 解析源码数据
        bs = bs4.BeautifulSoup(response.text,'html.parser')
        # 获取公司名称
        comany =
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值