selenium获取某网站工作岗位信息(含火狐浏览器的驱动下载安装步骤)

目录

一、说明

二、Firefox驱动下载并配置环境变量

2.1、下载火狐浏览器驱动

2.2、配置驱动环境变量

三、selenium概念

3.1、概念引入

3.2、一些函数

3.2.1、切换不同窗口

3.2.2、切换到不同iframe

3.2.3、无头浏览器

四、运行步骤

4.1、打开第一个窗口

4.2、更多信息

五、运行结果

5.1、程序运行结果

5.2、生成文件结果

六、完善


一、说明
 

环境:win10家庭版

编辑器:pycharm edu

python版本:py 3.10

使用的浏览器:火狐(Firefox)

本次内容:获取目标工作岗位的信息,并在同级目录下生成一个excl表格直观展示结果

二、Firefox驱动下载并配置环境变量

2.1、下载火狐浏览器驱动

下载链接如下:

https://github.com/mozilla/geckodriver/releases/

进入页面后,滑到以下内容:

下载完成后,将压缩包解压出来的文件,放到和当前编辑器(pycharm)python解释器安装文件夹下,如下(安装包放哪里无所谓,但是解压出来的东西如果在后面有一个数字,记得把重命名把数字清除掉):

方法一、命令行命令找到安装路径,命令为:py -0p

方法二、pycharm 编辑器查看

运行一个当前文件夹的.py程序,在控制台会出现安装路径,如下(但是我的就没有出现,不建议使用这个方法):

2.2、配置驱动环境变量

配置windows环境变量可参考文章:环境变量的添加

三、selenium概念

3.1、概念引入

        selenium是Web的自动化测试工具,最初是为网站自动化测试而开发的,selenium 可以运行在浏览器,支持所有主流的浏览器。在爬虫方面使用selenium一般是为了绕过JS加密,直接获取页面内容。

        selenium可以使用:id,name,tagName,className,linkText,partialLinkeText,css,

XPATH等等进行页面源代码的解析,从而获取页面的内容。

关键词:自动化测试、运行在浏览器、绕过JS、获取页面内容

3.2、一些函数

3.2.1、切换不同窗口

driver.switch_to.window(driver.window_handles[-1])  #这代表着切换到最后一个打开的窗口

3.2.2、切换到不同iframe

1、找到页面里的iframe的XPATH路径

2、使用switch_to.frame(路径),把不同的iframe路径放入即可切换到不同的iframe

3.2.3、无头浏览器

解释:数据在后台加载,浏览器不进行显示

用法:

1)导入支持包,如下:

        from selenium.werdriver.浏览器类型.options import Options

2)创建配置,如下:

        opt = Options()

        opt.add_argument("--headless")

        opt.add_argument("--disbale-gpu")

        web = 浏览器对象(options=opt)

四、运行步骤

 本文主要使用XPATH进行数据的提取,对XPATH简单介绍:XPATH入门

4.1、打开第一个窗口

说明:源代码不能直接放外链,审核通过不了,以下内容的url均使用文字代替,移植源代码测试注意识别并更改

from selenium.webdriver import Firefox  # 导入火狐驱动


def get_info():
    driver = Firefox()  # 创建一个浏览器对象

    driver.get("这里是访问的url")  # 访问网页


if __name__ == '__main__':  # 函数运行入口
    get_info()

        上面代码运行的结果就会直接在火狐浏览器(因为使用的Firefox驱动,生成的也是Firefox对象)打开发起请求的url(不过速度会比较慢,这也是selenium的特点)页面

4.2、更多信息

源代码如下,发起请求的url已替换为文字,测试使用注意识别:

from selenium.webdriver import Firefox  # 导入火狐驱动
from selenium.webdriver.common.by import By  # 导入需要的组件
from selenium.webdriver.common.keys import Keys

import time
import xlwt


def get_info():
    # 在同级目录下创建一个excl存放数据
    workbook = xlwt.Workbook(encoding='ascii')
    worksheet = workbook.add_sheet("No.1")
    worksheet.write(0, 0, '公司名称')  # 1行1列
    worksheet.write(0, 1, '岗位名称')
    worksheet.write(0, 2, '岗位要求与薪资')
    worksheet.write(0, 3, '发布时间')

    driver = Firefox()  # 创建一个浏览器对象
    driver.get("访问的url")  # 访问网页
    # 访问页面后,出现登录或注册弹窗,影响下一步,所以要把弹窗关掉
    # 右键检查,选项页面元素,直接复制xpath路径
    driver.implicitly_wait(8)
    # driver.switch_to.window(driver.window_handles[-1])
    one_el = driver.find_element(By.XPATH, '//*[@id="cboxClose"]')  # 定位标签位置,一般是打叉的位置
    one_el.click()  # 点击该位置,点击打叉也就是关闭弹窗
    time.sleep(3)
    # 在文本框输入内容,先定位,在输入值,敲回车或者点击搜索
    driver.find_element(By.XPATH, '//*[@id="search_input"]').send_keys("python", Keys.ENTER)
    time.sleep(3)
    driver.refresh()
    time.sleep(3)
    all_li = driver.find_elements(By.XPATH, '/html/body/div/div[2]/div/div[2]/div[3]/div/div[1]/div')
    a = 1
    for li in all_li:
        job_name = li.find_element(By.XPATH, './div/div/div/a').text
        job_time = li.find_element(By.XPATH, './div/div/div/span').text
        job_company = li.find_element(By.XPATH, './div/div[2]/div/a').text
        job_requirement = li.find_element(By.XPATH, './div/div/div[2]').text

        worksheet.write(a, 0, job_company)  # 写入第1列
        worksheet.write(a, 1, job_name)  # 写入第2列
        worksheet.write(a, 2, job_requirement)  # 写入第3列
        worksheet.write(a, 3, job_time)  # 写入第4列
        a += 1
        print("写入成功%d次", a-1)
    workbook.save('data.xls')
    print("数据保存成功,同级目录下查看数据!")


if __name__ == '__main__':  # 函数运行入口
    get_info()

五、运行结果

5.1、程序运行结果

如下图1

 图1

5.2、生成文件结果

如下图2、3:

 图2

 图3

六、完善

6.1、获取更多更详细的信息

        点击进每一个岗位页面进行提取,提取结束后关掉,在进入下一个岗位,当页内容提取结束后,点击下一页继续提取,循环反复。

6.2、提升运行速度

        没思路。

猜你喜欢

转载自blog.csdn.net/qq_57663276/article/details/128179340
今日推荐