大家好,在之前我们讲解过很多基于requests+bs4的爬虫,现在换个口味,本文将基于Selenium讲解如何爬取并使用openpyxl存储拉勾网招聘数据。

  需求说明

目标url:https://www.lagou.com/

Selenium爬虫实现下方需求

输入任意关键字,比如 python 数据分析,点击搜索,得到的有关岗位信息,爬取下来保存到Excel

可以看到,当前共有30页,每个页面有15条招聘信息。

  Selenium爬取

首先导入需要用到的库

"""
@Author  :叶庭云
@CSDN  :https://yetingyun.blog.csdn.net/
"""

from selenium import webdriver
import time
import logging
import random
import openpyxl

接着进行一些初始配置

wb = openpyxl.Workbook()   # 创建工作薄对象
sheet = wb.active          # 获取活动的工作表
# 添加列名
sheet.append(['job_name''company_name''city','industry''salary''experience_edu','welfare','job_label'])
# 输出日志的基本配置
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s: %(message)s')

现在写根据关键词搜索、翻页爬取的函数,主要就是实用Selenium模拟浏览器操作,实现并不困难,如果需要详细了解可以查看注释。

# 根据关键词搜索、翻页爬取函数
def search_product(key_word):
    browser.find_element_by_id('cboxClose').click()     # 关闭让你选城市的窗口
    time.sleep(2)
    browser.find_element_by_id('search_input').send_keys(key_word)  # 定位搜索框 输入关键字
    browser.find_element_by_class_name('search_button').click()     # 点击搜索
    browser.maximize_window()    # 最大化窗口
    time.sleep(2)
    browser.find_element_by_class_name('body-btn').click()    # 关闭弹窗  啥领取红包窗口
    time.sleep(random.randint(13))
    browser.execute_script("scroll(0,3000)")      # 下拉滚动条
    get_data()           # 调用抓取数据的函数
    # 模拟点击下一页   翻页爬取数据  每爬取一页数据  休眠   控制抓取速度  防止被反爬 可能会让输验证码
    for i in range(29):
        browser.find_element_by_class_name('pager_next ').click()
        time.sleep(1)
        browser.execute_script("scroll(0,3000)")   # 执行js代码下拉滚动条
        get_data()   # 调用抓取该页数据的函数
        time.sleep(random.randint(35))   # 休眠

下面就是遍历页面并使用.find_element_by_xpath定位数据所在的位置,之后写入数据并输出日志。

# 抓取每页数据函数
def get_data():
    # Xpath提取想要的数据
    items = browser.find_elements_by_xpath('//*[@id="s_position_list"]/ul/li')
    # 遍历 获取这一页的每条招聘信息
    for item in items:
        job_name = item.find_element_by_xpath('.//div[@class="p_top"]/a/h3').text
        company_name = item.find_element_by_xpath('.//div[@class="company_name"]').text
        city = item.find_element_by_xpath('.//div[@class="p_top"]/a/span[@class="add"]/em').text
        industry = item.find_element_by_xpath('.//div[@class="industry"]').text
        salary = item.find_element_by_xpath('.//span[@class="money"]').text
        experience_edu = item.find_element_by_xpath('.//div[@class="p_bot"]/div[@class="li_b_l"]').text
        welfare = item.find_element_by_xpath('.//div[@class="li_b_r"]').text
        job_label = item.find_element_by_xpath('.//div[@class="list_item_bot"]/div[@class="li_b_l"]').text
        data = f'{job_name},{company_name},{city},{industry},{salary},{experience_edu},{welfare},{job_label}'
        # 爬取数据  输出日志信息
        sheet.append([job_name, company_name, city,industry, salary, experience_edu, welfare, job_label])
        logging.info(data)

搞定基本爬取逻辑与代码后,最后就是写爬取主函数,将目标URL和关键词传入即可!

def main():
    # 访问目标url  https://www.lagou.com/
    browser.get('https://www.lagou.com/')
    time.sleep(random.randint(13))
    search_product(keyword)
    # 保存数据
    wb.save('job_info.xlsx')


if __name__ == '__main__':
    # 待关键词 比如Python 数据分析
    keyword = 'Python 数据分析'
    # 本地chromedriver.exe的路径
    chrome_driver = r'D:\python\pycharm2020\chromedriver.exe'
    options = webdriver.ChromeOptions()
    # 关闭左上方 Chrome 正受到自动测试软件的控制的提示
    options.add_experimental_option('useAutomationExtension'False)
    options.add_experimental_option("excludeSwitches", ['enable-automation'])
    browser = webdriver.Chrome(options=options, executable_path=chrome_driver)
    main()
    browser.quit()    # 关闭浏览器

让我们来试一下,从下图可以看到程序没有报错,成功爬取数据!

生成的Excel如下

最后将数据导入pandas并查看,当然也可以利用数据做一些简单的数据分析,这些就交给感兴趣的读者!

本文就到这里,如果文章对你有所帮助的话,欢迎点赞收藏,你的支持是对作者最大的鼓励,不足之处可以多多指正,交流学习!


©著作权归作者所有:来自51CTO博客作者mb5fe18e32e4691的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. 秒懂!图解四个实用的Pandas函数!
  2. 更高效的利用Jupyter+pandas进行数据分析,6种常用数据格式效率对
  3. 一个真实问题,搞定三个冷门pandas函数
  4. 『爬虫四步走』手把手教你使用Python抓取并存储网页数据!
  5. 分析数万条旅游评论数据后,告诉你国庆“坑爹”景点背后的秘密....
  6. 给女朋友讲了讲 V8 引擎的“回调函数”!
  7. 天猫双11数据过于完美?我们用python来看看
  8. 38年后的今天,用数据回顾什么是女排精神?
  9. 来自Kaggle金牌得主的Python数据挖掘框架,一文学会机器学习基本流

随机推荐

  1. Android布局的一些属性和开关、创建log图
  2. Unity与Android交互
  3. Android 软键盘 禁用回车功能或者换成搜
  4. android-1.5,1.6,2.0,2.1,2.2源码下载地
  5. Android kernel code merged into mainli
  6. Android TextView加上阴影效果
  7. Android 启动过程
  8. android 多窗口模式activity的生命周期
  9. Android获取摄像头详细信息
  10. MAC上使用maven打android的包,报错:No And