环境准备
安装selenium
查看chrome的版本
下载相应的chromedriver驱动
http://npm.taobao.org/mirrors/chromedriver/
http://chromedriver.storage.googleapis.com/index.html
然后将chromedriver放到python的安装目录即可
结构分析
观察结构发现页面url为:www.zhipin.com + 城市的拼音
https://www.zhipin.com/wuhan/
找到搜索框
找到提交按钮
找到岗位详情
代码
from selenium import webdriver
import csv
fileName = "招聘数据.csv"
jobName = input("请输入您的意愿岗位:\n")
cityName = input("请输入您的意愿城市(拼音):\n")
url = f'https://www.zhipin.com/{cityName}/'
headerRow = [
'岗位名称',
'工作地点',
'起薪',
'薪资区间',
'学历要求',
'联系人',
'公司名称',
'业务范围',
'岗位职责/方向',
'福利待遇',
]
def createTable():
with open(fileName, 'a', encoding='utf-8-sig', newline='') as csvfile:
csv_writer = csv.DictWriter(csvfile, fieldnames=headerRow)
csv_writer.writeheader() # 写入表头数据
def getOneJobPage(driver, writer):
jobInfos = driver.find_elements_by_class_name('job-primary') # 模拟点击岗位详情
for info in jobInfos: # 迭代取出数据
print(info.text) # 打印岗位详情
strText = info.text
arrTxt = strText.split("\n")
tmp = arrTxt[2].split("-") # 将字符串变成数组
arrTxt.insert(2, tmp[0])
writer.writerow(arrTxt) # 将数组写入表格
def main():
driver = webdriver.Chrome()
driver.get(url) # 获取url
searchEle = driver.find_element_by_class_name('ipt-search') # 找到输入框
searchEle.send_keys(jobName) # 输入框中填上工作名称
btnSearch = driver.find_element_by_css_selector('button.btn.btn-search')
btnSearch.click() # 模拟点击搜索按钮
pageS = 1
while pageS < 50: # page循环
with open(fileName, 'a', encoding='utf-8-sig', newline='') as csvfile:
# 打开文件csv文件
writer = csv.writer(csvfile)
getOneJobPage(driver, writer) # 调用获取岗位页面函数
pageS += 1
driver.implicitly_wait(30) # 隐式等待,30秒钟内只要找到了元素就开始执行,未找到则超时;
btnnext = driver.find_element_by_css_selector("a.next")
# 寻找下一页按钮
btnnext.click() # 点击按钮
# csvfile.close() #关闭文件
if __name__ == "__main__":
createTable()
main()