0


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

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

简介

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

步骤 1: 创建 Scrapy 项目

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

  1. scrapy startproject boss

步骤 2: 创建 Spider

在 Scrapy 项目中,你需要创建一个 Spider 来定义爬取网站的规则和行为。在项目目录下创建一个名为

  1. boss_spider.py

的 Spider 文件,然后添加以下代码:

  1. import time
  2. import scrapy
  3. from selenium import webdriver
  4. from selenium.webdriver.chrome.options import Options
  5. from selenium.webdriver.common.by import By
  6. from selenium.webdriver.support.ui import WebDriverWait
  7. from selenium.webdriver.support import expected_conditions as EC
  8. from boss.items import BossItem
  9. classBsSpider(scrapy.Spider):
  10. name ="bs"
  11. start_urls =["https://www.zhipin.com/web/geek/job?query=python&city=101110100"]defparse(self, response):# 创建 ChromeOptions 对象
  12. chrome_options = Options()# 禁用图片加载
  13. prefs ={"profile.managed_default_content_settings.images":2}
  14. chrome_options.add_experimental_option("prefs", prefs)# 启动 Chrome 浏览器
  15. driver = webdriver.Chrome(options=chrome_options)# 循环,可以设置连续爬取多个城市的职位信息
  16. city_list =['101110100']for j in city_list:for p inrange(1,11):# 下一页
  17. next_url =f'https://www.zhipin.com/web/geek/job?query=python&city={j}&page={p}'# 打开网页
  18. driver.get(next_url)
  19. time.sleep(1)for i inrange(1,31):# 反爬
  20. time.sleep(1)# 等待页面加载完成try:
  21. wait = WebDriverWait(driver,10)
  22. wait.until(EC.presence_of_element_located((By.XPATH,f'//ul/li[{i}]/div[1]/a')))except:continue# 省略爬取数据的代码...# 创建一个BossItem对象并将数据存储其中try:
  23. item = BossItem()
  24. item['job_name']= job_name
  25. item['salary']= salary
  26. # 添加其他字段...# 返回BossItem对象给Scrapy管道进行进一步处理yield item
  27. except:continue# 关闭新页面try:
  28. driver.close()except:continue# 切换回旧页面try:
  29. driver.switch_to.window(driver.window_handles[-1])except:continue# 关闭浏览器
  30. driver.quit()

请注意,这里使用了 Selenium 来模拟浏览器操作,以便在页面加载和元素查找方面更加灵活。同时,我们需要为每个职位信息创建一个

  1. BossItem

对象,并使用

  1. yield

语句返回它们,以便 Scrapy 管道进行进一步处理。

步骤 3: 创建 Item

在 Scrapy 项目中,需要定义要抓取的数据结构。在项目目录下的

  1. items.py

文件中,添加以下代码:

  1. import scrapy
  2. classBossItem(scrapy.Item):
  3. job_name = scrapy.Field()
  4. salary = scrapy.Field()
  5. benefit = scrapy.Field()
  6. local = scrapy.Field()type= scrapy.Field()
  7. requ = scrapy.Field()
  8. key = scrapy.Field()
  9. detail = scrapy.Field()
  10. company = scrapy.Field()
  11. market = scrapy.Field()
  12. scale = scrapy.Field()
  13. business = scrapy.Field()
  14. introduce = scrapy.Field()
  15. address = scrapy.Field()
  16. url = scrapy.Field()
  17. hr_name = scrapy.Field()
  18. hr_p = scrapy.Field()

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

步骤 4: 配置 Settings

在 Scrapy 项目的

  1. settings.py

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

  1. DOWNLOADER_MIDDLEWARES ={'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware':None,'scrapy_user_agents.middlewares.RandomUserAgentMiddleware':400,# 其他中间件...}
  2. USER_AGENTS =[# 添加一些常见的 User-Agent]
  3. ROBOTSTXT_OBEY =False

步骤 5: 运行 Spider

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

  1. scrapy crawl bs

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

数据结果展示

在这里插入图片描述

可视化结果

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

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

需要源代码的同学可以在评论区留言!

标签: scrapy selenium python

本文转载自: https://blog.csdn.net/yaokk1/article/details/132892306
版权归原作者 啥都会一点的差不多先生 所有, 如有侵权,请联系我们删除。

“使用 Scrapy 和 Selenium 爬取 Boss 直聘职位信息(可视化结果)”的评论:

还没有评论