selenium , 招聘网站信息,保存到excel表,【完整代码】,python,pandas

首先安装

如何安装使用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能够识别,无所谓的,看不惯的可以自己修改,运行是没有问题的!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

宇智波.望

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值