使用Python爬取BOSS直聘职位数据并保存到Excel

使用Python爬取BOSS直聘职位数据并保存到Excel

在数据分析和挖掘中,爬取招聘网站数据是一项常见的任务。本文将详细介绍如何使用Python爬取BOSS直聘上与“测试工程师”相关的职位数据,并将其保存到Excel文件中。通过逐步分解代码和添加详细注释,我们将深入了解整个实现过程。


项目概述

本项目的功能是爬取BOSS直聘指定条件的职位数据,并将数据保存到Excel文件。以下是主要步骤:

  1. 配置浏览器驱动:使用Selenium模拟用户操作。
  2. 加载网页:动态加载职位列表。
  3. 解析职位信息:提取职位的名称、薪资、技能要求等。
  4. 保存数据:数据持久化到Excel文件,并为列标题添加注释,便于理解。

环境准备

安装依赖库

请确保已安装以下库:

pip install selenium pandas openpyxl
下载ChromeDriver

根据你的Chrome浏览器版本,下载对应的ChromeDriver,并将其路径配置到代码中。

我这里是用的chrome浏览器:

先查看浏览器版本

114及更早版本

113及113以后下载

130及以后


详细代码解析

1. 配置Selenium WebDriver

目标:通过Selenium启动浏览器,模拟用户访问BOSS直聘。

from selenium import webdriver
from selenium.webdriver.chrome.service import Service

def setup_driver():
    """
    配置并启动Selenium WebDriver,用于模拟浏览器操作。
    :return: 返回配置完成的Chrome浏览器驱动对象。
    """
    options = webdriver.ChromeOptions()
    # 添加可选的启动参数
    # options.add_argument('--headless')  # 无头模式,隐藏浏览器界面
    # options.add_argument('--disable-gpu')  # 禁用GPU,优化性能
    # options.add_argument('--no-sandbox')  # 禁用沙箱模式
    # options.add_argument('--start-maximized')  # 最大化窗口

    # 创建浏览器驱动服务
    service = Service('D:\\tool\\chromedriver-win64\\chromedriver.exe')

    # 初始化WebDriver
    driver = webdriver.Chrome(service=service, options=options)
    return driver
  • 重点webdriver.ChromeOptions可以设置浏览器的启动参数,如无头模式(headless)。
  • 路径配置Service指定了ChromeDriver的路径。

2. 加载网页并滚动加载

目标:加载指定页面,并模拟滚动加载更多内容。

import time
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys

def scrape_jobs(driver, url):
    """
    爬取BOSS直聘的职位数据。
    :param driver: 已配置的Selenium WebDriver实例。
    :param url: BOSS直聘的目标页面URL。
    :return: 返回包含职位信息的列表。
    """
    driver.get(url)  # 打开指定页面
    time.sleep(15)  # 等待页面完全加载

    # 模拟滚动操作,加载更多职位信息
    for _ in range(5):  # 假设需要滚动5次加载更多内容
        driver.find_element(By.TAG_NAME, 'body').send_keys(Keys.END)
        time.sleep(2)  # 等待页面加载完成

    # 定位职位列表
    jobs = driver.find_elements(By.CSS_SELECTOR, '.job-list-box > li')  # 找到所有职位块
    job_data = []  # 用于存储职位数据
  • 页面滚动:通过发送Keys.END键模拟用户滚动操作。
  • 延迟加载time.sleep确保页面元素完全加载。

3. 提取职位数据

目标:解析页面中每个职位的数据。

    for job in jobs:
        try:
            # 获取职位信息
            job_link_element = job.find_element(By.CSS_SELECTOR, '.job-card-left')  # 职位链接所在的元素
            job_link = job_link_element.get_attribute('href')  # 获取链接
            job_name = job.find_element(By.CSS_SELECTOR, '.job-name').text  # 职位名称
            salary_desc = job.find_element(By.CSS_SELECTOR, '.salary').text  # 薪资描述
            city_area = job.find_element(By.CSS_SELECTOR, '.job-area').text.split('·')  # 城市和区域
            city_name = city_area[0]  # 城市名称
            area_district = city_area[1] if len(city_area) > 1 else ""  # 区域名称

            # 获取技能标签
            skills = [skill.text for skill in job.find_elements(By.CSS_SELECTOR, '.job-card-footer .tag-list li')]

            # 获取经验和学历要求
            tags = job.find_elements(By.CSS_SELECTOR, '.job-info .tag-list li')
            job_experience = tags[0].text if len(tags) > 0 else ""  # 工作年限要求
### 回答1: 很高兴为您解答。爬取boss信息添加注释可以使用Python编写爬虫程序来实现,具体步骤如下: 1. 使用requests库发送HTTP请求,获取要爬取的网页源代码; 2. 使用BeautifulSoup库解析网页源代码,提取所需信息; 3. 使用pandas库将提取的信息存储到DataFrame中; 4. 使用openpyxl库将DataFrame中的信息存储到Excel中,为每一条信息添加注释; 5. 使用openpyxl库将Excel中的信息导出到文件中。 ### 回答2: Python实现爬取boss信息添加注释的过程如下: 1. 导入所需的库 ```python import requests # 发送HTTP请求获取网页内容 from bs4 import BeautifulSoup # 解析网页内容 import csv # 将数据保存为CSV文件 import time # 添加时间间隔,避免被网站封禁 ``` 2. 发送HTTP请求获取网页内容 ```python def get_html(url): headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0;Win64) AppleWebkit/537.36 ' '(KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36' } response = requests.get(url, headers=headers) html = response.text return html ``` 3. 解析网页内容,提取所需信息 ```python def parse_html(html): soup = BeautifulSoup(html, "html.parser") job_list = [] items = soup.find_all('div', class_='job-list') for item in items: job = {} job['title'] = item.find('span', class_='job-name').get_text().strip() job['company'] = item.find('div', class_='company-text').get_text().strip() job['salary'] = item.find('span', class_='red').get_text().strip()[:-1] job_list.append(job) return job_list ``` 4. 将提取的信息保存为CSV文件 ```python def save_to_csv(job_list): with open('boss_zhipin_jobs.csv', 'a', encoding='utf_8_sig', newline='') as f: fieldnames = ['title', 'company', 'salary'] writer = csv.DictWriter(f, fieldnames=fieldnames) writer.writeheader() writer.writerows(job_list) ``` 5. 主函数,控制爬取过程 ```python def main(): for page in range(1, 6): # 爬取前5页的数据 url = f'https://www.zhipin.com/c101010100/?query=Python&page={page}&ka=page-{page}' html = get_html(url) job_list = parse_html(html) save_to_csv(job_list) time.sleep(1) # 暂停1秒,避免频繁访问网页被封禁 if __name__ == '__main__': main() ``` 以上是一种简单的Python实现爬取boss信息的示例,使用BeautifulSoup解析网页内容,将所需信息保存为CSV文件。为了避免被网站封禁,添加了时间间隔。根据需要可做进一步的优化和改进。 ### 回答3: Python实现爬取boss信息添加注释,主要分为以下几个步骤: 1. 导入所需的库 ```python import requests from bs4 import BeautifulSoup ``` 2. 设置请求头,模拟浏览器发送请求 ```python headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3' } ``` 3. 发送HTTP请求获取网页内容 ```python url = 'https://www.zhipin.com/c101020100-p100901/' response = requests.get(url, headers=headers) ``` 4. 使用BeautifulSoup解析网页内容 ```python soup = BeautifulSoup(response.text, 'html.parser') ``` 5. 定位所需的信息的HTML标签,提取数据 ```python # 定位职位标题 titles = soup.select('.job-title') for title in titles: print(title.text) # 定位薪水 salaries = soup.select('.red') for salary in salaries: print(salary.text) # 定位公司名称 companies = soup.select('.company-text .name') for company in companies: print(company.text) # 定位工作地点 locations = soup.select('.job-area-wrapper .job-area') for location in locations: print(location.text) ``` 6. 添加注释以便他人理解代码功能和逻辑 ```python # 导入所需的库 import requests from bs4 import BeautifulSoup # 设置请求头,模拟浏览器发送请求 headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3' } # 发送HTTP请求获取网页内容 url = 'https://www.zhipin.com/c101020100-p100901/' response = requests.get(url, headers=headers) # 使用BeautifulSoup解析网页内容 soup = BeautifulSoup(response.text, 'html.parser') # 定位职位标题 titles = soup.select('.job-title') for title in titles: print(title.text) # 定位薪水 salaries = soup.select('.red') for salary in salaries: print(salary.text) # 定位公司名称 companies = soup.select('.company-text .name') for company in companies: print(company.text) # 定位工作地点 locations = soup.select('.job-area-wrapper .job-area') for location in locations: print(location.text) ``` 以上就是使用Python实现爬取boss信息添加注释的代码。通过发送HTTP请求获取网页内容,使用BeautifulSoup解析网页内容,根据需要定位所需的信息,最后将其打印出来。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

中國移动丶移不动

码农

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值