前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >安装Selenium自动化测试框架、并用Selenium爬取拉勾网最新职位数据

安装Selenium自动化测试框架、并用Selenium爬取拉勾网最新职位数据

作者头像
Python与Excel之交
发布2021-08-05 14:45:19
6000
发布2021-08-05 14:45:19
举报
文章被收录于专栏:Python与Excel之交

本文主要讲解selenium的安装和基础使用,然后利用selenium爬取拉勾网最新的职位信息。

安装Selenium

selenium 的安装只需要在命令端输入以下命令。

代码语言:javascript
复制
pip install selenium

selenium安装好之后,还需要安装相应浏览器的Driver,本文用到的是Chrome浏览器,所以拿Chrome浏览器为例,安装相应的ChromeDriver 来驱动浏览器。

ChromeDriver下载地址:

代码语言:javascript
复制
http://npm.taobao.org/mirrors/chromedriver/

在下载之前先来确认下我们使用的浏览器版本:

通过ChromeDriver的下载链接,找到Chrome浏览器相近版本电脑系统进行下载。

下载完成之后,解压,将其放置在Python安装路径下的文件夹中即可。

接着我们测试一下,用Selenium操控浏览器打开百度网页:

代码语言:javascript
复制
from selenium import webdriver
wb = webdriver.Chrome()
wb.get('https://www.baidu.com/')

这时浏览器会自动打开百度的首页,左上角会出现“Chrome正受到自动测试软件控制”。

任务实战

目标网站:

代码语言:javascript
复制
https://www.lagou.com/zhaopin/1/?filterOption=3&sid=32e5402e4e034a3b929d06c764ba52c6

selenium 有个很大的好处就是不用怎么考虑网站是动态还是静态,只要你在浏览器上看到的就能爬取直接下来,因为 selenium 和我们所看到的网页一样,都是已经经过渲染的。

而我们要考虑的是网页的翻页以及如何定位到数据。

网页翻页

selenium进行翻页可以直接修改相关参数,然后建立一个循环进行传入参数,这是最普遍的。还有另一种就是找到网页进行翻页的按钮,进行模拟点击,或者对网页进行模拟向下拉动,显示更多的内容。本文用的是第一种方法。

拉勾网页数有限定,只能显示 30 页,点击下一页链接,参数 zhaopin 后面的数字会发生递增变化:

数据定位

selenium数据的定位方法有以下几种:

这里要注意的是elementelements的区别,后一个加了 selement是查找一个,elements是查找全部。本文用到find_element_by_xpathfind_elements_by_xpath

find_element_by_xpathlxml库的xpath语法一样,也是用在 XML 文档中对元素和属性进行遍历。这里可以在开发者工具中复制xpath语法,但查找多个元素时,还需要适当修改下xpath语法,所以我建议自己编写。

我们需要的数据存在多个li标签下,所以我们需要先提取li标签:

代码语言:javascript
复制
wb.find_elements_by_xpath('//div[@class="s_position_list "]/ul[@class="item_con_list"]/li')

接着建立for循环提取我们需要的文本数据:

代码语言:javascript
复制
for li in ul:
    zw_h3 = li.find_element_by_xpath('./div/div/div/a/h3').text  

思路和基本用法都已经讲解清楚了,过多的就不再赘述,这里直接贴出完整代码:

代码语言:javascript
复制
# -*-codEing = utf-8 -*-
# @Time : 2021/2/13 13:19
# @Author : 锋小刀
# @File : 拉勾网.PY
# @Software : PyCharm

from selenium import webdriver
import pandas as pd
import time

df = pd.DataFrame()
wb = webdriver.Chrome()
for i in range(1, 6):
    wb.get(f'https://www.lagou.com/zhaopin/{i}/?filterOption=3&sid=32e5402e4e034a3b929d06c764ba52c6')
    time.sleep(2)
    ul = wb.find_elements_by_xpath('//div[@class="s_position_list "]/ul[@class="item_con_list"]/li')
    for li in ul:
        zw_h3 = li.find_element_by_xpath('./div/div/div/a/h3').text  # 职位名称
        dd_em = li.find_element_by_xpath('./div/div/div/a/span/em').text  # 工作地点
        span_div = li.find_element_by_xpath('./div/div/div[2]/div').text  # 工资|经验|学历
        gs_div = li.find_element_by_xpath('./div/div[2]/div').text  # 公司名称
        gm_div = li.find_element_by_xpath('./div/div[2]/div[2]').text  # 公司规模
        fl_div = li.find_element_by_xpath('./div[2]/div[2]').text  # 公司福利
        print(zw_h3, dd_em, span_div, gs_div, gm_div, fl_div, sep='  |  ')
        data = pd.DataFrame(
            {'职位名称': [zw_h3], '工作地点': [dd_em], '工资|经验|学历': [span_div], '公司名称': [gs_div], '公司规模': [gm_div],
             '公司福利': [fl_div]})
        df = pd.concat([df, data])
df.to_csv('拉勾网最热门职位.csv', index=False, mode='a+')
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-02-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python与Excel之交 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 网页翻页
  • 数据定位
相关产品与服务
云开发 CLI 工具
云开发 CLI 工具(Cloudbase CLI Devtools,CCLID)是云开发官方指定的 CLI 工具,可以帮助开发者快速构建 Serverless 应用。CLI 工具提供能力包括文件储存的管理、云函数的部署、模板项目的创建、HTTP Service、静态网站托管等,您可以专注于编码,无需在平台中切换各类配置。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档