利用selenium获取前程无忧招聘信息-2
时间:2020-05-23
本文章向大家介绍利用selenium获取前程无忧招聘信息-2,主要包括利用selenium获取前程无忧招聘信息-2使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
目的:
前一篇文章写的也是爬取前程无忧,该篇文章对脚本进行了部分改动,增加了灵活性
1.利用隐式等待,废除time.sleep的使用,节约时间成本
2.添加了用户名,密码及job名称参数,更加灵活
3.增加了下一页判断,如果某个job有多页结果,可以查询到全部信息
代码:
#!/usr/bin/env python #-*- coding:utf-8 -*- """ 目的: 从前程无忧网站上提取指定工作的详细信息 """ import time from selenium import webdriver import requests from bs4 import BeautifulSoup from getpass import getpass def get_soup(url): headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:76.0) Gecko/20100101 Firefox/76.0" } try: response = requests.get(url, headers=headers) if response.status_code == 200: # response.apparent_encoding = "utf-8" html = response.content soup = BeautifulSoup(html, 'html.parser') except: print("爬取失败") return soup def get_content(soup): content = soup.find("div", class_="bmsg job_msg inbox").text # print(content) return content.strip() def final_result(url): soup = get_soup(url) result = get_content(soup) return result def next_page(): print("\033[32m开始搜索下一页\033[0m") try: next_page = driver.find_element_by_xpath("/html/body/div[2]/div[4]/div[55]/div/div/div/ul/li[8]/a") next_page.click() return True except Exception as e: print("这是最后一页") return False def get_job_info(): # 获取内容 all_list = driver.find_element_by_id("resultList").find_elements_by_class_name("el") for item in all_list[1:]: jobname = item.find_element_by_class_name("t1").find_element_by_tag_name("a").text jobhref = item.find_element_by_class_name("t1").find_element_by_tag_name("a").get_attribute("href") jobskill = final_result(jobhref) company = item.find_element_by_class_name("t2").text site = item.find_element_by_class_name("t3").text money = item.find_element_by_class_name("t4").text date = item.find_element_by_class_name("t5").text out_dict = { "职位": jobname, "职位要求": jobskill, "职位详细信息": jobhref, "招聘公司": company, "工作地点": site, "薪水": money, "发布日期": date } print(out_dict) if __name__ == "__main__": user = input("user: ").strip() passwd = getpass() jobname = input("jobname: ") # 登陆 driver = webdriver.Firefox() driver.get("https://login.51job.com/login.php?lang=c") driver.implicitly_wait(20) # 设置隐式等待, 这样无需到处充满着time.sleep driver.find_element_by_id("loginname").send_keys(user) driver.find_element_by_id("password").send_keys(passwd) driver.find_element_by_id("login_btn").click() print("登陆中,请稍等。。。") # 返回首页 print("进入首页。。。") driver.find_element_by_xpath("/html/body/div[1]/div[4]/div/p/a[1]").click() # 添加多个地区 driver.find_element_by_xpath("/html/body/div[3]/div/div[1]/div/div/p[2]/em").click() driver.find_element_by_xpath('//*[@id="work_position_click_center_right_list_category_000000_180200"]').click() driver.find_element_by_xpath('//*[@id="work_position_click_bottom_save"]').click() # 搜索job print("搜索职位。。") driver.find_element_by_id("kwdselectid").send_keys(jobname) driver.find_element_by_xpath("/html/body/div[3]/div/div[1]/div/button").click() get_job_info() while next_page(): get_job_info()
原文地址:https://www.cnblogs.com/lmt921108/p/12944026.html
- Hadoop离线数据分析平台实战——290活跃用户分析Hadoop离线数据分析平台实战——290活跃用户分析
- Codeforces 719B Anatoly and Cockroaches
- 【一起学Python】爬取前程无忧招聘信息并写入Excel
- 【一起学Python】爬取网易云歌词
- Hadoop离线数据分析平台实战——370外链信息分析Hadoop离线数据分析平台实战——370外链信息分析
- POJ 1067 取石子游戏
- 【一起学Python】STEAM游戏评测爬虫
- Open Judge 2750 鸡兔同笼
- POJ 1017 Packets
- Hadoop离线数据分析平台实战——380MapReduce程序优化Hadoop离线数据分析平台实战——380MapReduce程序优化
- 配置远程访问Jupyter+腾讯云超划算活动上车
- HDU 4256 The Famous Clock
- ZOJ 1403&&HDU 1015 Safecracker【暴力】
- Torch7搭建卷积神经网络详细教程
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 用 Wolfram 语言映射美国的山火
- Mathematica在中学数学教与学中的应用
- 总结一些ES不常用的filter
- 如何将炫酷的报表直接截图发送邮件——在Superset 0.37使用Schedule Email功能
- Kettle构建Hadoop ETL实践(五):数据抽取
- Kafka监控必备——Kafka-Eagle 2.0.2正式发布
- iOS Universal link 入门指南
- Flutter基础widgets教程-CupertinoAlertDialog篇
- Flutter基础widgets教程-cupertinoActivityIndicator篇
- Flutter基础widgets教程-Align篇
- 深入理解Linux内核进程上下文切换
- 面对疾风吧!io_uring 优化 nginx 实战演练
- 奇技淫巧:在 ssh 里面把服务器的文本复制到本地电脑
- 【计算机网络】学习笔记,第一篇:概述(谢希仁版)
- 【Objective-C】Objective-C语言的动态性