用Python写一个程序爬取智联招聘网站上的岗位信息并保存到Excel表里
以下是Python代码,用于爬取智联招聘网站上的岗位信息,并将数据保存到Excel表中。
首先,我们需要安装并导入一些必要的库和模块:
import requests
from bs4 import BeautifulSoup
import openpyxl
接下来,我们需要定义一个函数,用于从网站上获取岗位信息:
def get_jobs(keyword, pages):
# 定义请求头
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'}
# 定义岗位信息列表
jobs_list = []
# 循环获取每一页的岗位信息
for page in range(1, pages + 1):
# 构造请求链接
url = f'https://sou.zhaopin.com/?p={page}&jl=489&kw={keyword}&kt=3'
# 发送请求
response = requests.get(url, headers=headers)
# 解析HTML
soup = BeautifulSoup(response.content, 'html.parser')
# 获取岗位信息节点列表
job_nodes = soup.find_all('div', class_='joblist-box__item')
# 循环处理每个岗位信息节点
for job_node in job_nodes:
# 获取岗位名称
job_name = job_node.find('div', class_='joblist-box__title').find('a').text.strip()
# 获取公司名称
company_name = job_node.find('div', class_='joblist-box__jobname').find('a').text.strip()
# 获取工作地点
location = job_node.find('div', class_='joblist-box__location').text.strip()
# 获取薪资范围
salary = job_node.find('div', class_='joblist-box__jobsalary').text.strip()
# 获取发布时间
publish_time = job_node.find('div', class_='joblist-box__jobstat').find_all('span')[1].text.strip()
# 将岗位信息添加到列表中
jobs_list.append([job_name, company_name, location, salary, publish_time])
# 返回岗位信息列表
return jobs_list
上述函数接受两个参数:keyword 和 pages。其中,keyword 是我们要搜索的关键词,pages 是我们要获取的页面数。函数返回一个列表,其中包含每个岗位的名称、公司名称、工作地点、薪资范围和发布时间。
接下来,我们需要将数据保存到 Excel 表中。我们可以定义一个函数来完成此任务:
def save_to_excel(jobs_list, filename):
# 创建 Excel 工作簿
workbook = openpyxl.Workbook()
# 获取默认的工作表
worksheet = workbook.active
# 设置表头
worksheet.cell(row=1, column=1, value='岗位名称')
worksheet.cell(row=1, column=2, value='公司名称')
worksheet.cell(row=1, column=3, value='工作地点')
worksheet.cell(row=1, column=4, value='薪资范围')
worksheet.cell(row=1, column=5, value='发布时间')
# 循环写入数据
for row in range(2, len(jobs_list) + 2):
worksheet.cell(row=row, column=1, value=jobs_list[row - 2][0])
worksheet.cell(row=row, column=2, value=jobs_list[row - 2][1])
worksheet.cell(row=row, column=3, value=jobs_list[row - 2][2])
worksheet.cell(row=row, column=4, value=jobs_list[row - 2][3])
worksheet.cell(row=row, column=5, value=jobs_list[row - 2][4])
# 保存 Excel 工作簿
workbook.save(filename)
上述函数接受两个参数:jobs_list 和 filename。其中,jobs_list 是我们要保存的岗位信息列表,filename 是我们要保存的 Excel 文件的文件名。
最后,我们可以编写主程序,调用上述两个函数来实现我们的任务:
if __name__ == '__main__':
# 获取岗位信息
jobs_list = get_jobs('Python', 2)
# 将岗位信息保存到 Excel 表中
save_to_excel(jobs_list, 'jobs.xlsx')
上述代码会搜索关键词为 Python 的岗位信息,并获取前两页的数据。然后,它将数据保存到名为 jobs.xlsx 的 Excel 表中。
完整代码如下:
原文地址: https://www.cveoy.top/t/topic/bq37 著作权归作者所有。请勿转载和采集!