scrapy爬取前程无忧、应届生 数据+分析

本文介绍了使用Python Scrapy爬虫框架抓取前程无忧和应届生网站上的招聘信息,数据存储到MongoDB,然后进行数据清洗、分析,包括平均薪资、岗位分布、工作经验与薪资的关系等,最后通过数据可视化展示结果。
摘要由CSDN通过智能技术生成

一、总体要求
利用python编写爬虫程序,从招聘网站上爬取数据,将数据存入到MongoDB数据库中,将存入的数据作一定的数据清洗后做数据分析,最后将分析的结果做数据可视化。
二、环境
pycharm、mongodb、python3.6
三、爬取字段
1、具体要求:职位名称、薪资水平、招聘单位、工作地点、工作经验、学历要求、工作内容(岗位职责)、任职要求(技能要求)。
(1)新建一个项目:scrapy startproject pawuyijob
(2)生成一个spider文件:scrapy genspider wuyi wuyi.com
结构如下:
在这里插入图片描述
(3)修改settings.py

BOT_NAME = 'pawuyijob'

SPIDER_MODULES = ['pawuyijob.spiders']
NEWSPIDER_MODULE = 'pawuyijob.spiders'
USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Safari/537.36'
DOWNLOAD_DELAY = 0.5
ITEM_PIPELINES = {
   
   'pawuyijob.pipelines.PawuyijobPipeline': 300,
}

(4)编写items.py
代码如下:

import scrapy


class PawuyijobItem(scrapy.Item):
    # define the fields for your item here like:
    # name = scrapy.Field()
    work_place = scrapy.Field()  # 工作地点
    company_name = scrapy.Field()  # 公司名称
    position_name = scrapy.Field()  # 职位名称
    company_info = scrapy.Field()  # 公司信息
    work_salary = scrapy.Field()  # 薪资情况
    release_date = scrapy.Field()  # 发布时间
    job_require = scrapy.Field()  # 职位信息
    contact_way = scrapy.Field()  # 联系方式
    education = scrapy.Field()  # 学历
    work_experience = scrapy.Field()#工作经验
    pass

(5)编写spiders文件
我们最关键的东西就是能够把xpath找正确,很明显我们能看见每行数据都在这个标签中,我们可以写个循环
在这里插入图片描述
还有我们可以按住ctrl+f,看我们的xpath是否匹配到了
在这里插入图片描述
(6)详情页的url
在这里插入图片描述
下一页的url:
在这里插入图片描述
spider代码如下:

# -*- coding: utf-8 -*-
import scrapy


from pawuyijob.items import PawuyijobItem

class WuyiSpider(scrapy.Spider):
    name = 'wuyi'
    allowed_domains = ['51job.com']
    start_urls =['https://search.51job.com/list/000000,000000,0130%252C7501%252C7506%252C7502,01%252C32%252C38,9,99,%2520,2,1.html?lang=c&stype=&postchannel=0000&workyear=99&cotype=99&degreefrom=99&jobterm=99&companysize=99&providesalary=99&lonlat=0%2C0&radius=-1&ord_field=0&confirmdate=9&fromType=&dibiaoid=0&address=&line=&specialarea=00&from=&welfare=']

    def parse(self, response):
        #每条数据存放的xpath
        node_list = response.xpath("//div[@id='resultList']/div[@class='el']")
        # 整个for循环结束代表 当前这一页已经爬完了, 那么就该开始爬取下一页
        for node in node_list:
            item = PawuyijobItem()
            # 职位名称
            item["position_name"] = node.xpath("./p/span/a/@title").extract_first()
            # 公司信息
            item["company_name"] = node.xpath("./span[@class='t2']/a/@title").extract_first()
            # 工作地点
            item["work_place"] = node.xpath("./span[@class='t3']/text()").extract_first()
            # 薪资情况
            item["work_salary"] = node.xpath("./span[@class='t4']/text()").extract_first()
            # 发布时间
            item["release_date"] = node.xpath("./span[@class='t5']/text()").extract_first()
            #详情页的url
            detail_url = node.xpath("./p/span/a/@href").extract_first()
            yield scrapy.Request(url=detail_url, callback=self.parse_detail, meta={
   "item": item})
            #下一页
        next_url = response.xpath("//div[@class='p_in']//li[@class='bk'][2]/a/@href").extract_first()
        #如果没有详情页的url我们就返回不再执行
        if not next_url:
            return

        yield scrapy.Request(url=next_url, callback=self.parse)

    def parse_detail(self, response):
        item = response.meta["item"]
        # 职位信息
        item["job_require"] = response.xpath("//div[@class='bmsg job_msg inbox']/p/text()").extract()
        # 联系方式
        item["contact_way"] = response.xpath("//div[@class='bmsg inbox']/a/te
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值