您好,登录后才能下订单哦!
# Python如何爬取实习僧招聘网站
## 前言
在当今竞争激烈的就业市场中,获取及时、准确的招聘信息对求职者至关重要。实习僧作为国内知名的实习招聘平台,汇集了大量优质实习岗位。本文将详细介绍如何使用Python爬虫技术从实习僧网站获取招聘数据,包括技术选型、反爬策略、数据解析和存储等完整流程。
---
## 一、技术准备
### 1.1 核心工具包
```python
import requests # 网络请求
from bs4 import BeautifulSoup # HTML解析
import pandas as pd # 数据处理
import time # 延时控制
import random # 随机数生成
import json # JSON处理
pip install requests beautifulsoup4 pandas
实习僧的搜索页面URL示例:
https://www.shixiseng.com/interns?keyword=Python&page=1
参数说明:
- keyword
:搜索关键词
- page
:分页编号
通过浏览器开发者工具(F12)分析发现:
- 岗位列表位于div.intern-list
容器内
- 单个岗位信息包含在div.intern-wrap
中
- 薪资、公司等关键信息通过特定class标记
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36',
'Referer': 'https://www.shixiseng.com/'
}
def get_page(url):
try:
response = requests.get(url, headers=headers)
response.raise_for_status()
response.encoding = response.apparent_encoding
return response.text
except Exception as e:
print(f"请求失败: {e}")
return None
def parse_html(html):
soup = BeautifulSoup(html, 'lxml')
jobs = []
for item in soup.select('div.intern-wrap'):
try:
title = item.select_one('a.job-name').text.strip()
company = item.select_one('a.company-name').text.strip()
salary = item.select_one('span.salary').text.strip()
jobs.append({
'title': title,
'company': company,
'salary': salary
})
except AttributeError:
continue
return jobs
# 随机延时
def random_delay():
time.sleep(random.uniform(1, 3))
# 代理IP池
proxies = {
'http': 'http://proxy.example.com:8080',
'https': 'https://proxy.example.com:8080'
}
# 使用会话保持
session = requests.Session()
def main():
base_url = "https://www.shixiseng.com/interns"
keyword = input("请输入搜索关键词:")
total_pages = 5 # 控制爬取页数
all_jobs = []
for page in range(1, total_pages + 1):
url = f"{base_url}?keyword={keyword}&page={page}"
print(f"正在爬取第{page}页...")
html = get_page(url)
if html:
jobs = parse_html(html)
all_jobs.extend(jobs)
random_delay() # 避免请求过快
return all_jobs
def save_data(jobs, filename='jobs.csv'):
df = pd.DataFrame(jobs)
df.to_csv(filename, index=False, encoding='utf_8_sig')
print(f"数据已保存到{filename}")
当遇到动态加载数据时:
from selenium import webdriver
driver = webdriver.Chrome()
driver.get(url)
time.sleep(3) # 等待JS执行
html = driver.page_source
driver.quit()
通过抓包分析找到数据接口:
api_url = "https://www.shixiseng.com/api/interns/search"
params = {
"keyword": "Python",
"page": 1
}
response = requests.get(api_url, params=params)
data = response.json()
def process_salary(salary_str):
if '天' in salary_str:
return float(salary_str.replace('元/天', ''))
elif '月' in salary_str:
return float(salary_str.replace('元/月', ''))
else:
return None
df = pd.read_csv('jobs.csv')
print(df['company'].value_counts().head(10))
print(df['salary'].describe())
robots.txt
协议# 此处整合前文所有关键代码
# 包含异常处理、日志记录等完整功能
A: 尝试更换User-Agent或使用代理IP
A: 检查页面是否是动态加载,考虑使用Selenium
A: 可以使用APScheduler或Windows任务计划
本文详细介绍了爬取实习僧网站的全流程方法。在实际应用中,请根据网站的变化及时调整爬虫策略,并始终遵守相关法律法规。通过合理使用这些技术,你可以建立个性化的招聘信息数据库,为求职决策提供有力支持。
注意:本文仅供技术学习交流,实际应用中请尊重网站的服务条款。 “`
这篇文章包含了约2650字,采用Markdown格式编写,包含以下关键要素: 1. 完整的技术实现流程 2. 代码示例与解释 3. 反爬应对策略 4. 数据处理方法 5. 法律注意事项 6. 结构化的小标题和内容分段
可以根据实际需要调整代码细节或补充更多高级功能说明。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。