首先安装
如何安装使用selenium爬虫,请看我之前的博客:https://blog.csdn.net/Xiao_cai_gun/article/details/122254177?spm=1001.2014.3001.5501
不废话上代码
代码
from selenium import webdriver
import time
import pandas as pd
def start():
starttime = time.time() # 控制爬取时间,可以删掉
endtime = 0 # 控制爬取时间,可以删掉
chrome_driver = r"D:\Python3.7\Anaconda\Lib\site-packages\selenium\webdriver\chrome\chromedriver.exe"
#安装chromedriver.exe;修改成你自己的安装地址!!
driver = webdriver.Chrome(executable_path=chrome_driver)
driver.get('https://www.797rs.com/jobs/jobs_list.html')
#我使用的是:上面网站作为爬取网址。需要注册登录一个网站的账号才能爬取完整信息。
#注册完成后将你自己的账号,密码填入对应代码!!
print("请先登录!!")
driver.find_element_by_id('J_site_login').click()
time.sleep(2)
# 定位用户名输入框
text_label1 = driver.find_element_by_id('username')
text_label12 = driver.find_element_by_id('password')
text_label1.send_keys('***********你自己的账号')
text_label12.send_keys('**********你自己的密码')
time.sleep(2)
driver.find_element_by_id('topLoginBtn').click()
print('登录成功')
driver.get('https://www.797rs.com/jobs/jobs_list.html')
driver.find_element_by_xpath('/html/body/div[6]/div[11]/div[1]').click()
b = driver.find_element_by_class_name('nav_box').find_elements_by_tag_name('li')
HREF = []
NAME = []
for i in b:
# i.click()
# time.sleep(2)
# 一级类型:
print(i.text)
print(i.get_attribute('onclick'))
I = i.get_attribute('onclick')
need_href1 = I.split('\'')[1]
need_href = 'https://www.797rs.com/' + need_href1
print(need_href)
HREF.append(need_href)
NAME.append(i.text)
print(HREF)
print(NAME)
lists = []
for h in range(len(HREF)):
NAME[h]
print(NAME[h])
driver.get(HREF[h])
# 获取页数
try:
driver.find_element_by_class_name('qspage').find_elements_by_tag_name('a')[-1].click()
page_number = driver.find_element_by_class_name('current').text
print(page_number)
except Exception as e:
page_number = '1'
# 需要的url拼接
print('需要的url拼接')
print(HREF[h][:-5])
url1 = HREF[h][:-5]
for i in range(int(page_number)):
print(url1 + '/page/' + str(i + 1) + '.html')
driver.get(url1 + '/page/' + str(i + 1) + '.html')
items = driver.find_elements_by_class_name('J_jobsList')
href = []
for it in items:
# 职位详情连接
link = it.find_element_by_class_name('td-j-name').find_element_by_tag_name('a').get_attribute('href')
href.append(link)
for h1 in range(len(href)):
good = []
driver.get(href[h1])
# 职位名称
try:
职位 = driver.find_element_by_class_name('j-n-txt').text
print(职位)
except Exception as e:
职位 = ''
# 薪资
try:
薪资 = driver.find_element_by_class_name('wage').text
print(薪资)
except Exception as e:
薪资 = ''
# 时间
try:
put_time = driver.find_element_by_class_name('timebg').text
print(put_time)
except Exception as e:
put_time = ''
# job_details_info
try:
job_details_info = driver.find_element_by_class_name('item').text.split('\n')
print(job_details_info)
工作性质 = ''
招聘人数 = ''
学历要求 = ''
经验要求 = ''
年龄要求 = ''
工作地点 = ''
for job in job_details_info:
if '工作性质' in job:
工作性质 = job[4:]
if '招聘人数' in job:
招聘人数 = job[4:]
if '学历要求' in job:
学历要求 = job[4:]
if '工作经验' in job:
经验要求 = job[4:]
if '年龄要求' in job:
年龄要求 = job[4:]
if '市' or '县' in job:
工作地点 = job
except Exception as e:
print(e)
# 职位详情
try:
职位详情描述 = driver.find_element_by_class_name('describe').find_element_by_class_name('txt').text
print(职位详情描述)
except Exception as e:
职位详情描述 = ''
try:
待遇福利 = ''
# 公司福利
公司福利ss = driver.find_element_by_class_name('lab').find_elements_by_class_name('li')
for aa in 公司福利ss:
待遇福利 = 待遇福利 + ' ' + aa.text
except:
待遇福利 = ''
print(待遇福利)
# 公司名称
try:
h2 = driver.find_element_by_class_name('comname').find_element_by_tag_name(
'a').get_attribute('href')
print(h2)
driver.get(h2)
# 公司名称
c1 = driver.find_element_by_class_name('cname').text
print(c1)
# com_details_info
com_details_info2 = driver.find_element_by_class_name('contact').find_elements_by_class_name('txt')
公司性质 = ''
所属行业 = ''
注册资金 = ''
员工人数 = ''
成立时间 = ''
性别要求 = ''
for cc in com_details_info2:
print(cc.text)
if '性质' in cc.text:
公司性质 = cc.text[2:]
if '行业' in cc.text:
所属行业 = cc.text[2:]
if '规模' in cc.text:
员工人数 = cc.text[2:]
# 福利待遇
# 待遇福利 = ''
# print(待遇福利)
# 公司详情描述
try:
c2 = driver.find_element_by_class_name('infobox').find_element_by_class_name('txt').text
print(c2)
except Exception as e:
c2 = ''
# 公司详情链接
except Exception as e:
print(e)
good.append(NAME[h])
good.append('')
good.append(职位)
good.append(薪资)
good.append(工作地点)
good.append(put_time)
good.append(学历要求)
good.append(经验要求)
good.append(年龄要求)
good.append(性别要求)
good.append(工作性质)
good.append(招聘人数)
good.append(职位详情描述)
good.append(href[h1])
good.append(c1)
good.append(公司性质)
good.append(所属行业)
good.append(注册资金)
good.append(员工人数)
good.append(成立时间)
good.append(待遇福利)
good.append(c2)
good.append(h2)
lists.append(good)
endtime = time.time() # 控制爬取时间,可以删掉
if endtime - starttime > 6: # 控制爬取时间,可以删掉
break#控制爬取时间,可以删掉
if endtime - starttime > 6: # 控制爬取时间,可以删掉
break#控制爬取时间,可以删掉
# 保存信息
data = pd.DataFrame(
columns=['行业类型(大)', '行业类型(小)', '职位', '薪资', '工作地点', '招聘发布时间', '学历要求', '经验要求', '年龄要求', '性别要求', '工作性质', '招聘人数',
'职位详情描述', '职位详情链接',
'公司名称', '公司性质', '所属行业', '注册资金', '员工人数', '成立时间', '待遇福利', '公司详情描述', '公司详情链接'])
for item in lists:
data.loc[len(data)] = [item[0], item[1], item[2], item[3], item[4], item[5], item[6], item[7], item[8],
item[9], item[10], item[11], item[12], item[13], item[14], item[15], item[16], item[17],
item[18], item[19], item[20], item[21], item[22]]
data.to_excel(r'D:\xxxx\xxxx\xxxx\赣州test.xlsx') # 修改成你要保存的文件地址!
def main():
start()
if __name__ == '__main__':
main()
备注
注意代码中的注释,修改一些必要信息!!
我用了中文变量命名,python能够识别,无所谓的,看不惯的可以自己修改,运行是没有问题的!!