python-selenium爬取51job获取求职信息

前言

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。

PS:如有需要Python学习资料的小伙伴可以点击下方链接自行获取

Python免费学习资料、代码以及交流解答点击即可加入


没有赶上秋招的,今年就要开始春招了,可是该怎么获取想要的求职信息呢,各种求职网站信息繁多,快速获取数据筛选得到我们想要的工作地点和岗位以及薪资是我们先行的第一步。

本次爬虫就以51job为例,爬取51job职业为数据分析的相关所有求职信息。

'''
如有需要Python学习资料的小伙伴可以加群领取:1136201545
'''

from selenium import webdriver
import openpyxl

wd = webdriver.Chrome()
lst =[]

def get_data():
    for i in range(1, 3):
        wd.get('https://search.51job.com/list/000000,000000,0000,00,9,99,%25E6%2595%25B0%25E6%258D%25AE%25E5%2588%2586%25E6%259E%2590,2,{0}.html?lang=c&postchannel=0000&workyear=01%252c06&cotype=99&degreefrom=04&jobterm=99&companysize=99&ord_field=0&dibiaoid=0&line=&welfare='.format(i))
        wd.implicitly_wait(10)
        for i in range(1, 51):
            # 职位
            zhiwei = wd.find_element_by_xpath('/html/body/div[2]/div[3]/div/div[2]/div[4]/div[1]/div[{0}]/a/p[1]/span[1]'.format(i)).text
            print(zhiwei)
            # 发布日期
            fabu_date = wd.find_element_by_xpath('/html/body/div[2]/div[3]/div/div[2]/div[4]/div[1]/div[{0}]/a/p[1]/span[2]'.format(i)).text
            print(fabu_date)
            # 工资
            salary = wd.find_element_by_xpath('/html/body/div[2]/div[3]/div/div[2]/div[4]/div[1]/div[{0}]/a/p[2]/span[1]'.format(i)).text
            print(salary)
            # 地区丨经历丨学历丨人数
            basic_info = wd.find_element_by_xpath('/html/body/div[2]/div[3]/div/div[2]/div[4]/div[1]/div[{0}]/a/p[2]/span[2]'.format(i)).text
            print(basic_info)
            # 福利(注意只有41个,有的招聘未写福利)所以进行一个判断
            if NodeExists("/html/body/div[2]/div[3]/div/div[2]/div[4]/div[1]/div[{0}]/a/p[3]/span/i".format(i)):
                welfare = wd.find_element_by_xpath('/html/body/div[2]/div[3]/div/div[2]/div[4]/div[1]/div[{0}]/a/p[3]/span/i'.format(i)).text
                print(welfare)
            else:
                welfare = ''
                print(welfare)
            # 职位url
            zw_url = wd.find_element_by_xpath('/html/body/div[2]/div[3]/div/div[2]/div[4]/div[1]/div[{0}]/a'.format(i)).get_attribute('href')
            print(zw_url)
            # 公司
            company = wd.find_element_by_xpath('/html/body/div[2]/div[3]/div/div[2]/div[4]/div[1]/div[{0}]/div[2]/a'.format(i)).text
            print(company)
            # 公司类型
            style = wd.find_element_by_xpath('/html/body/div[2]/div[3]/div/div[2]/div[4]/div[1]/div[{0}]/div[2]/p'.format(i)).text
            print(style)
            print(i)
            lst.append([i, zhiwei, fabu_date, salary, basic_info, welfare, zw_url, company, style])
    wd.close()
    

# 捕获异常 参考:https://www.cnblogs.com/KHZ521/p/14265235.html
def NodeExists(xpath):
    try:
        wd.find_element_by_xpath(xpath)
        return True
    except:
        return False

def save2excel():
    wb = openpyxl.Workbook()
    print('open excel')
    sheet = wb.active
    print('open sheet')
    row0 = ['序号', '职位', '发布日期', '薪资', '基本信息', '福利', 'url', '公司', '公司类型']
    sheet.append(row0)
    for item in lst:
        '''
        遍历列表,逗号分隔列,列表分隔行,一个列表是一行
        '''
        sheet.append(item)
    wb.save('51job.xlsx')
    print('保存文件')
if __name__ == '__main__':
    get_data()
    save2excel()
### 回答1: 好的,下面是关于使用PythonSelenium爬取51job的简要步骤: 1. 安装PythonSelenium 2. 下载Chrome浏览器和对应版本的ChromeDriver 3. 编写Python脚本,使用Selenium打开Chrome浏览器,访问51job网站,并输入关键词进行搜索 4. 使用Selenium模拟鼠标滚动,加载更多的职位信 5. 使用BeautifulSoup或正则表达式等方法解析网页内容,提取所需信 6. 将提取的信保存到本地文件或数据库中 需要注意的是,爬取网站时需要遵守相关法律法规和网站的使用协议,不得进行恶意爬取和侵犯他人隐私等行为。 ### 回答2: Python Selenium是一个用于自动化测试的Python库。它可以模拟用户在网页上的操作并提取网页的信。本篇文章将介绍如何使用Python Selenium爬取51job的招聘信。以下是具体步骤: 1. 安装Selenium和Chrome浏览器 在Windows平台下,安装Selenium的命令为:pip install selenium。接着,安装Chrome浏览器,并在本地环境中安装ChromeDriver,它是Selenium的浏览器驱动程序。下载地址为:https://sites.google.com/a/chromium.org/chromedriver/home 2. 连接到51job网站 通过Selenium启动Chrome浏览器并连接到51job的招聘页面。查找“关键字”、“地点”、“职能类别”和“发布时间”的输入框并依次输入搜索条件。通过点击“搜索”按钮,进入到搜索结果页面。 3. 爬取搜索结果 从搜索结果页面获取每个招聘信的标题、公司名称、薪酬、发布日期和详细链接。将提取的信存储在列表中。 4. 翻页爬取结果 对于大量的搜索结果,需要翻页操作来获取全部招聘信。对于51job网站,通过点击“下一页”按钮实现翻页。循环爬取多页的招聘信并存储在列表中。 5. 存储数据 将提取的招聘信存储在CSV文件或其他格式中,方便后续的分析和处理。 6. 结束程序 关闭浏览器和ChromeDriver,程序结束运行。 综上所述,使用Python Selenium可以方便地爬取51job的招聘信,并用于后续的数据分析和处理。 ### 回答3: Python Selenium是一种基于Python的自动化测试工具,它主要用于模拟用户在浏览器上的操作,以此实现网络爬虫的功能。51job是一个国内较为知名的招聘网站,如果我们想要批量获取招聘信,可以使用Python Selenium进行爬取。 为了使用Python Selenium爬取51job,我们需要安装Selenium库以及相应的web driver(如Chrome driver)。 首先,我们需要进入51job的招聘页面,分析其中的HTML结构,确定需要爬取的信。通常招聘信包括公司名称、职位、学历要求、薪资等信。然后根据这些信,编写Python脚本,使用Selenium模拟用户操作,依次打开网页、输入搜索条件、点击搜索按钮、获取每页的职位信等。 具体实现步骤如下: 1. 首先,我们需要导入Selenium库和web driver。在本例中,我们使用Chrome driver作为web driver,并设置一些选项,以便快速打开和关闭浏览器。 import time from selenium import webdriver chrome_options = webdriver.ChromeOptions() chrome_options.add_argument('--headless') chrome_options.add_argument('--disable-gpu') chrome_options.add_argument('--no-sandbox') browser = webdriver.Chrome(chrome_options=chrome_options) browser.implicitly_wait(10) 2. 打开51job的招聘页面。 browser.get('https://www.51job.com/') 3. 模拟输入搜索条件。在51job的搜索页面,我们可以通过定位输入框并使用send_keys()方法进行模拟输入。 input_box = browser.find_element_by_id('kwdselectid') input_box.send_keys('Python') 4. 模拟点击搜索按钮。同样,我们可以通过定位按钮并使用click()方法模拟点击事件。 search_button = browser.find_element_by_css_selector('div[class="fltr"][id="searchbtn"]') search_button.click() 5. 遍历每一页并获取职位信。在51job中,职位信被包含在一个类名为“dw_table”的表格中。我们可以使用find_elements_by_css_selector()方法获取这个表格,再使用for循环遍历其中的每一行,获取并打印出每行的职位信。 table = browser.find_elements_by_css_selector('div[class="el"]')[1:] for row in table: company = row.find_element_by_css_selector('span[class="t2"]').text position = row.find_element_by_css_selector('a').text education = row.find_element_by_css_selector('span[class="t3"]').text salary = row.find_element_by_css_selector('span[class="t4"]').text print(company, position, education, salary) 最后,我们可以关闭浏览器。 browser.quit() 综上所述,Python Selenium是一种功能强大的网络爬虫工具,可以帮助我们快速爬取网页上的大量招聘信。它可以模拟用户在浏览器上的操作,让我们可以轻松爬取需要的信,并在数据分析和处理中使用
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值