使用 Scrapy 和 Selenium 爬取 Boss 直聘职位信息(可视化结果)
创始人
2024-12-28 21:34:51
0次

在本博客中,我们将介绍如何使用 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 的管道,以将数据保存到数据库或其他数据存储中。

数据结果展示

在这里插入图片描述

可视化结果

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

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

需要源代码的同学可以添加微信:
在这里插入图片描述

相关内容

热门资讯

开挂方法!随便跑得快辅助透视插... 开挂方法!随便跑得快辅助透视插件,河落杠次确实有外挂,一直新版有挂一、随便跑得快可以开透视的定义与意...
开挂攻略!今日花牌辅助透视插件... 开挂攻略!今日花牌辅助透视插件,众乐是真的有外挂,原来有挂攻略一、今日花牌可以开透视的定义与意义1、...
开挂器!牵手跑胡子辅助透视插件... 开挂器!牵手跑胡子辅助透视插件,常州麻将存在有外挂,总是有挂助手1、牵手跑胡子透视辅助软件激活码多个...
开挂技巧!九天大厅辅助透视插件... 开挂技巧!九天大厅辅助透视插件,江淮竞技棋牌是有外挂,总是详细教程所有人都在同一条线上,像星星一样排...
开挂插件!38手游辅助透视插件... 开挂插件!38手游辅助透视插件,荔枝竞技真的有外挂,真是真的有挂1、金币登录送、破产送、升级送、活动...
开挂脚本!夏天YY辅助透视插件... 开挂脚本!夏天YY辅助透视插件,旺旺南平麻将是真的有外挂,好像有挂方式1、在旺旺南平麻将插件功能辅助...
开挂脚本!亲朋扯旋辅助透视插件... 开挂脚本!亲朋扯旋辅助透视插件,杭州麻将存在有外挂,切实有挂存在1、超多福利:超高返利,海量正版游戏...
开挂器!新利发辅助透视插件,指... 开挂器!新利发辅助透视插件,指尖四川麻将真的有外挂,确实详细教程1、下载好四川麻将透视辅助下载之后点...
开挂方法!斗娱斗地主辅助透视插... 开挂方法!斗娱斗地主辅助透视插件,BMW真的有外挂,切实有挂教程1、用户打开应用后不用登录就可以直接...
开挂器!朱雀大厅辅助透视插件,... 开挂器!朱雀大厅辅助透视插件,乐喜确实有外挂,本来有挂神器1、许多玩家不知道朱雀大厅辅助怎么退出观战...