需求
老板给了我一份公司名单(大概几百家如下图),让我到网上看看这些公司分别在招聘哪些岗位,通过分析他们的招聘需求大致能推断出我们和他们有没有业务上PY交易合作的可能性和契合点
几百家公司一个一个查岂不是要累死人,于是决定写个爬虫交差.
准备
因为爬的是智联招聘网的信息,所以用selenium
模拟用户行为相对简单一些
图方便直接把初始页面拉到了公司搜索页 https://sou.zhaopin.com/?jl=543&sf=0&st=0&kw= &kt=2
搜索后页面如图
代码
# 导入库
import time
import numpy as np
import pandas as pd
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
写了一半突然想到万一以后老板还有此类需求怎么办?
于是乎又把代码全部封装到函数里去了.(我机智勇敢!)
def filepath(path):
'''
#设置文件路径
#(老板给的公司名单是excel文件,x为excel文件后缀最后一个字母)
#(预防万一以后用,特地到加了个识别csv文件的语法)
if path[-1]=='x':
lists=pd.read_excel(path)['单位详细名称']
elif path[-1]=='v':
f = open(path,encoding='UTF-8')
df = pd.read_csv(f)
lists=df[df.columns[0]]
return lists
def text(page,name):
#处理搜索后页面
job_lists=[]
for u in page.text.split(name):
if u.split('\n')[-2]=='就业有位来':
job_lists.append(u.split('\n')[-3])
else:
job_lists.append(u.split('\n')[-2])
job_lists=job_lists[0:-1]
return name,job_lists
def zhilian(file):
#智联爬虫脚本封装
pf=pd.DataFrame()
browser = webdriver.Chrome()
url = 'https://sou.zhaopin.com/?jl=543&sf=0&st=0&kw=%20&kt=2'
browser.get(url)
browser.find_element_by_xpath("/html/body/div[2]/div/div/button").click()
elem=browser.find_element_by_class_name('search-box__common__input')
for i in filepath(file):
time.sleep(1)
elem.send_keys(Keys.CONTROL, 'a')
elem.send_keys(Keys.BACKSPACE)
elem.send_keys(i)
elem.send_keys(Keys.RETURN)
time.sleep(2)
try: #如果有发布招聘信息就爬下来保存
job_text = browser.find_element_by_id('listContent')
t=text(job_text,i)
df=pd.DataFrame({t[0]:t[1]}).T.reset_index()
except: #没有招聘就储存空值
df=pd.DataFrame({i:[np.nan]}).T.reset_index()
pf=pf.append(df)
pf.to_excel('智联招聘结果输出.xlsx',encoding='utf_8_sig',index=False)
browser.quit()
爬虫 ,启动!
zhilian('C:/Users/50454/Desktop/公司名单.xlsx')
结果
爬下来的文件如下图
然后给老板一看,
老板:怎么还有这么多公司没有爬到啊?
于是我现在被勒令要求再写4个爬虫,把boss直聘的,51job的,地宝网的,58同城的信息全部再爬一遍
QAQ