使用 Scrapy 和 Selenium 爬取 Boss 直聘职位信息(可视化结果)

这篇具有很好参考价值的文章主要介绍了使用 Scrapy 和 Selenium 爬取 Boss 直聘职位信息(可视化结果)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在本博客中,我们将介绍如何使用 Scrapy 和 Selenium 来爬取 Boss 直聘 网站上的职位信息。Boss 直聘是一个广受欢迎的招聘平台,提供了大量的职位信息,以及公司和 HR 的联系信息。通过本文的指南,你将学会如何创建一个爬虫来抓取特定城市的 Python 职位信息。

简介

在这个示例中,我们将创建一个 Scrapy 爬虫,使用 Selenium 来模拟浏览器操作,以抓取 Boss 直聘网站上特定城市的 Python 职位信息。我们将获取职位名称、工资、福利、地区、招聘类型、学历要求、关键词、详细要求、公司名称、是否上市、公司规模、所属行业、公司介绍、详细地址、HR 姓名和职位的信息。以下是实现这一目标的详细步骤。

步骤 1: 创建 Scrapy 项目

首先,确保你已经安装了 Scrapy 和 Selenium。然后,创建一个新的 Scrapy 项目:

scrapy startproject boss

步骤 2: 创建 Spider

在 Scrapy 项目中,你需要创建一个 Spider 来定义爬取网站的规则和行为。在项目目录下创建一个名为 boss_spider.py 的 Spider 文件,然后添加以下代码:

import time
import scrapy
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from boss.items import BossItem

class BsSpider(scrapy.Spider):
    name = "bs"
    start_urls = ["https://www.zhipin.com/web/geek/job?query=python&city=101110100"]

    def parse(self, response):
        # 创建 ChromeOptions 对象
        chrome_options = Options()

        # 禁用图片加载
        prefs = {"profile.managed_default_content_settings.images": 2}
        chrome_options.add_experimental_option("prefs", prefs)

        # 启动 Chrome 浏览器
        driver = webdriver.Chrome(options=chrome_options)

        # 循环,可以设置连续爬取多个城市的职位信息
        city_list = ['101110100']

        for j in city_list:
            for p in range(1, 11):
                # 下一页
                next_url = f'https://www.zhipin.com/web/geek/job?query=python&city={j}&page={p}'
                # 打开网页
                driver.get(next_url)

                time.sleep(1)

                for i in range(1, 31):
                    # 反爬
                    time.sleep(1)

                    # 等待页面加载完成
                    try:
                        wait = WebDriverWait(driver, 10)
                        wait.until(EC.presence_of_element_located((By.XPATH, f'//ul/li[{i}]/div[1]/a')))
                    except:
                        continue

                    # 省略爬取数据的代码...

                    # 创建一个BossItem对象并将数据存储其中
                    try:
                        item = BossItem()
                        item['job_name'] = job_name
                        item['salary'] = salary
                        # 添加其他字段...

                        # 返回BossItem对象给Scrapy管道进行进一步处理
                        yield item
                    except:
                        continue

                    # 关闭新页面
                    try:
                        driver.close()
                    except:
                        continue

                    # 切换回旧页面
                    try:
                        driver.switch_to.window(driver.window_handles[-1])
                    except:
                        continue

        # 关闭浏览器
        driver.quit()

请注意,这里使用了 Selenium 来模拟浏览器操作,以便在页面加载和元素查找方面更加灵活。同时,我们需要为每个职位信息创建一个 BossItem 对象,并使用 yield 语句返回它们,以便 Scrapy 管道进行进一步处理。

步骤 3: 创建 Item

在 Scrapy 项目中,需要定义要抓取的数据结构。在项目目录下的 items.py 文件中,添加以下代码:

import scrapy

class BossItem(scrapy.Item):
    job_name = scrapy.Field()
    salary = scrapy.Field()
    benefit = scrapy.Field()
    local = scrapy.Field()
    type = scrapy.Field()
    requ = scrapy.Field()
    key = scrapy.Field()
    detail = scrapy.Field()
    company = scrapy.Field()
    market = scrapy.Field()
    scale = scrapy.Field()
    business = scrapy.Field()
    introduce = scrapy.Field()
    address = scrapy.Field()
    url = scrapy.Field()
    hr_name = scrapy.Field()
    hr_p = scrapy.Field()

这里定义了与职位信息相关的字段,以便在 Spider 中使用。

步骤 4: 配置 Settings

在 Scrapy 项目的 settings.py 文件中,确保已经启用了 Scrapy 的下载中间件,并禁用了默认的 User-Agent。这样可以更好地模拟浏览器行为,减轻反爬虫限制:

DOWNLOADER_MIDDLEWARES = {
    'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware': None,
    'scrapy_user_agents.middlewares.RandomUserAgentMiddleware': 400,
    # 其他中间件...
}

USER_AGENTS = [
    # 添加一些常见的 User-Agent
]

ROBOTSTXT_OBEY = False

步骤 5: 运行 Spider

现在,你可以在 Scrapy 项目的根目录下运行 Spider:

scrapy crawl bs

Spider 将开始抓取 Boss 直聘网站上的职位信息,并将它们存储在指定的数据结构中。你可以根据需要进一步配置 Scrapy 的管道,以将数据保存到数据库或其他数据存储中。

数据结果展示

抓取boss直聘数据,scrapy,selenium,python

可视化结果

抓取boss直聘数据,scrapy,selenium,python

抓取boss直聘数据,scrapy,selenium,python

抓取boss直聘数据,scrapy,selenium,python

这就是使用 Scrapy 和 Selenium 爬取 Boss 直聘职位信息的完整流程。通过这个示例,你可以学习如何创建一个强大的爬虫来抓取网站上的数据,为你的数据分析和应用提供有用的信息。希望这篇博客对你有所帮助,谢谢阅读!

需要源代码的同学可以在评论区留言!文章来源地址https://www.toymoban.com/news/detail-714479.html

到了这里,关于使用 Scrapy 和 Selenium 爬取 Boss 直聘职位信息(可视化结果)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 爬虫项目实战2.1 Selenium爬取Boss招聘信息

    完成: 1.爬取信息 2.基于爬取结果筛选符合条件的信息    岗位名称、薪资、岗位要求、地区、公司名称、公司规模、细节链接 3.筛选base杭州的岗位保存到csv文件中 But容易出现网络不稳定造成的无法定位元素所在位置的情况,小范围爬取可以 4.基于csv分析后续

    2024年02月05日
    浏览(48)
  • 爬虫与数据分析项目实战2.1 Selenium爬取Boss招聘信息

    完成: 1.爬取信息 2.基于爬取结果筛选符合条件的信息    岗位名称、薪资、岗位要求、地区、公司名称、公司规模、细节链接 3.筛选base杭州的岗位保存到csv文件中 But容易出现网络不稳定造成的无法定位元素所在位置的情况,小范围爬取可以 4.基于csv分析后续

    2024年02月08日
    浏览(48)
  • python爬虫进阶篇:Scrapy中使用Selenium模拟Firefox火狐浏览器爬取网页信息

    接着上一篇的笔记,Scrapy爬取普通无反爬、静态页面的网页时可以顺利爬取我们要的信息。但是大部分情况下我们要的数据所在的网页它是动态加载出来的(ajax请求后传回前端页面渲染、js调用function等)。这种情况下需要使用selenium进行模拟人工操作浏览器行为,实现自动化

    2024年02月04日
    浏览(77)
  • 【Java】Selenium自动投简历(Boss直聘、猎聘、拉勾、51job)

    项目地址:https://github.com/loks666/get_jobs 第一步:配置Chrome(需和diver版本一致) driver目前已放进根目录,版本号是:122.0.6261.112,Chrome需要更新到最新版本。 若后面发生升级,请自行下载对应版本的driver driver下载链接:https://googlechromelabs.github.io/chrome-for-testing 例:你的路径是:

    2024年04月16日
    浏览(31)
  • Scrapy爬取数据,使用Django+PyEcharts实现可视化大屏

    使用Scrapy进行数据爬取,MySQL存储数据,Django写后端服务,PyEcharts制作可视化图表,效果如下。 项目下载地址:Scrapy爬取数据,并使用Django框架+PyEcharts实现可视化大屏 发现每个模块都有详情页,可以通过点击首页各个模块的标签,进行访问。 基于数据可视化的游客行为分析

    2024年02月09日
    浏览(52)
  • 【爬虫系列】使用Selenium模块采集招聘网站的职位信息(1)

    在上篇演示使用了 Request 模块采集智联招聘网站 PC 端网页的招聘信息,结果遇到了比较隐蔽的反爬限制(当时还不清楚什么原因导致的),看来使用该模块这条路暂时走不通了, 打算换用 Selenium 模块试试,并尝试寻找该网站反爬限制的具体原因 。 一、环境准备 Google 浏览

    2024年02月20日
    浏览(56)
  • BOSS直聘招聘经验

    招聘低端兼职岗位。流量很大,来的人通常实力也不足。 招聘高端兼职岗位。流量不多。来的人通常具备一定实力。 招聘高薪职位,流量一般,会有有实力的勾搭。 招聘低薪职位,流量一般。通常没什么实力。

    2024年02月21日
    浏览(49)
  • 【爬虫系列】Python爬虫实战--招聘网站的职位信息爬取

    1. 需求分析 从网上找工作,大家一般都会通过各种招聘网站去检索相关信息,今天利用爬虫采集招聘网站的职位信息,比如岗位名称,岗位要求,薪资,公司名称,公司规模,公司位置,福利待遇等最为关心的内容。在采集和解析完成后,使用 Excel 或 csv 文件保存。 2. 目标

    2024年02月02日
    浏览(52)
  • 28 | Boss直聘数据分析

    针对boss直聘网的招聘信息,然后分析互联网发展排名前十的城市在互联网方面职位的薪水,学历要求,经验要求,等等信息。 准备从以下几个方面进行分析: (1)各个城市的平均工资 (2)各个学历的平均工资 (3)各个岗位的平均工资 (4)不同工作经验要求的工资 (5)

    2024年02月12日
    浏览(44)
  • python爬虫进阶篇:Scrapy中使用Selenium+Firefox浏览器爬取沪深A股股票行情

    上篇记录了Scrapy搭配selenium的使用方法,有了基本的了解后我们可以将这项技术落实到实际需求中。目前很多股票网站的行情信息都是动态数据,我们可以用Scrapy+selenium对股票进行实时采集并持久化,再进行数据分析、邮件通知等操作。 详情请看上篇笔记 items middlewares setti

    2024年02月04日
    浏览(65)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包