写一个 爬取51招聘网站岗位信息的代码,并对其爬取数据进行csv文件存储与预处理
时间: 2023-09-19 10:08:09 浏览: 97
好的,以下是Python爬取51招聘网站岗位信息并进行数据预处理的示例代码:
```python
import requests
from bs4 import BeautifulSoup
import csv
# 爬取页面信息
def get_page(url):
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'}
response = requests.get(url, headers=headers)
if response.status_code == 200:
return response.text
else:
return None
# 解析页面信息
def parse_page(html):
soup = BeautifulSoup(html, 'lxml')
job_list = soup.find_all('div', class_='el')
for job in job_list:
job_name = job.find('a').text.strip() # 岗位名称
company_name = job.find('span', class_='t2').text.strip() # 公司名称
salary = job.find('span', class_='t4').text.strip() # 薪资待遇
location = job.find('span', class_='t3').text.strip() # 工作地点
release_time = job.find('span', class_='t5').text.strip() # 发布时间
yield [job_name, company_name, salary, location, release_time]
# 存储数据到csv文件
def save_to_csv(results):
with open('51job.csv', 'w', newline='', encoding='utf-8') as f:
writer = csv.writer(f)
writer.writerow(['岗位名称', '公司名称', '薪资待遇', '工作地点', '发布时间'])
writer.writerows(results)
# 数据预处理
def data_processing():
with open('51job.csv', 'r', newline='', encoding='utf-8') as f:
reader = csv.reader(f)
header = next(reader)
data = [row for row in reader]
# 进行数据预处理操作
# ...
# 返回预处理后的数据
return data
if __name__ == '__main__':
base_url = 'https://search.51job.com/list/000000,000000,0000,00,9,99,{0},2,{1}.html'
results = []
for page in range(1, 3): # 爬取1-2页数据
url = base_url.format('Python', page)
html = get_page(url)
for result in parse_page(html):
results.append(result)
save_to_csv(results)
data_processing()
```
这段代码首先定义了爬取页面信息、解析页面信息、存储数据到csv文件和数据预处理等函数。然后在主函数中,设置了爬取的页数和搜索的关键词,通过循环调用爬取和解析函数获取数据,并将数据保存到csv文件中。最后调用数据预处理函数对数据进行处理。
需要注意的是,在爬取和解析函数中,通过BeautifulSoup库来解析HTML页面,具体解析方法可以根据网页结构进行调整。在存储数据到csv文件函数中,使用csv库来写入数据,可以根据需要设置csv文件的编码方式和分隔符等参数。在数据预处理函数中,可以根据实际需求对数据进行各种操作,比如删除重复数据、清洗数据、统计分析等。
阅读全文