# 2021年10月29日完成,爬取51job网站获得相关岗位信息
from selenium import webdriver
from selenium.webdriver import FirefoxOptions
from lxml import etree
from xpinyin import Pinyin
import time
import re
import csv
import ast
import requestsoption = FirefoxOptions()
driver = webdriver.Firefox()
driver.implicitly_wait(10)# 输入职位目标城市
goal = input("目标城市:")
jobName = input("目标岗位:")
# 将城市名转为拼音
p = Pinyin()
cityPinyin = p.get_pinyin(goal, '')
# 跳转至目标城市网页
cityUrl = 'https://www.51job.com/'+cityPinyin+'/'
driver.get(cityUrl)
# 岗位搜索框输入
driver.find_element_by_xpath('//*[@id="kwdselectid"]').send_keys(jobName)
# 点击搜索,网页跳转至搜索结果页面
driver.find_elements_by_xpath('//button')[0].click()
# 等待1秒
time.sleep(1)
# 定位到目前网页的url,就是搜索结果的第一页
url = driver.current_url
# 正则匹配,得到其他页的URL
url1 = re.compile('https://search.51job.com/list/(\S+).html?').search(url).group()[:-6]
url2 = re.compile('.html?(\S+)').search(url).group()
print(url1+str(2)+url2)
# UA伪装
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:93.0) Gecko/20100101 Firefox/93.0'
}# 定义根据页面的index获取页面职位列表的函数
def getPage(index):# 获取当前URL的HTML页面responseNow = requests.get(url=url1+str(index)+url2, headers=headers)htmlNow = etree.HTML(responseNow.text)# 使用lxml库的xpath查找script元素的内容(提前观察前程无忧搜索结果页面源代码的结构,可以发现岗位列表在script中)resultNow = htmlNow.xpath('//script/text()')contentNow = resultNow[-2]# 使用lxml库的xpath查找script元素的内容(提前观察前程无忧搜索结果页面源代码的结构,可以发现岗位列表在script中)# 正则表达式获取岗位,一个岗位存储在一个字典中,所有岗位存储在a list of dict,# 广告岗位和普通岗位又存储在不同的两个list中,在这里我只统计普通岗位jobList = re.compile('"engine_jds":(.*)"adid":"(\S*)"}]').search(str(contentNow)).group()[13:]return ast.literal_eval(jobList)# 定义将字典列表写入jobs.csv的函数
def write_dict(value):table = ["type", "jt", "tags","ad_track", "jobid","coid", "effect","is_special_job", "job_href","job_name", "job_title","company_href", "company_name","providesalary_text", "workarea", "workarea_text", "updatedate", "iscommunicate","companytype_text", "degreefrom", "workyear", "issuedate", "isFromXyz", "isIntern","isdiffcity", "attribute_text", "companysize_text","companyind_text", "adid"]# table = ["job_href","job_name", "job_title", "company_name","providesalary_text","workarea_text", "updatedate",#          "companytype_text", "workyear", "issuedate","jobwelf_list", "attribute_text", "companysize_text","companyind_text"]with open('51jobs.csv', 'a+', newline='') as f:xieru = csv.DictWriter(f, table)xieru.writerows(value)# 获取当前URL的HTML页面
response = requests.get(url=url, headers=headers)
html = etree.HTML(response.text)
# 使用lxml库的xpath查找script元素的内容(提前观察前程无忧搜索结果页面源代码的结构,可以发现岗位列表在script中)
result = html.xpath('//script/text()')
content = result[-2]
# 正则表达式获取搜索结果总页数,可以匹配1位数,两位数,三位数,四位数,五位数,可以涵盖所有可能性了
pattern = re.compile('"total_page":"(\d\d?\d?\d?\d?)"')
total_page = int(pattern.search(str(content)).group()[14:-1])for pageNow in range(1,total_page+1):time.sleep(1)li = getPage(pageNow)write_dict(li)

前程无忧51job爬虫利用selenium爬取岗位信息-2021年10月29日相关推荐

  1. 利用Selenium爬取淘宝商品信息

    文章来源:公众号-智能化IT系统. 一.  Selenium和PhantomJS介绍 Selenium是一个用于Web应用程序测试的工具,Selenium直接运行在浏览器中,就像真正的用户在操作一样. ...

  2. 爬虫之selenium爬取斗鱼网站

    爬虫之selenium爬取斗鱼网站 示例代码: from selenium import webdriver import timeclass Douyu(object):def __init__(s ...

  3. layui获取input信息_python爬虫—用selenium爬取京东商品信息

    python爬虫--用selenium爬取京东商品信息 1.先附上效果图(我偷懒只爬了4页) 2.京东的网址https://www.jd.com/ 3.我这里是不加载图片,加快爬取速度,也可以用Hea ...

  4. python爬虫——使用selenium爬取微博数据(一)

    python爬虫--使用selenium爬取微博数据(二) 写在前面 之前因为在组里做和nlp相关的项目,需要自己构建数据集,采用selenium爬取了几十万条微博数据,学习了很多,想在这里分享一下如 ...

  5. python抓取文献关键信息,python爬虫——使用selenium爬取知网文献相关信息

    python爬虫--使用selenium爬取知网文献相关信息 写在前面: 本文章限于交流讨论,请不要使用文章的代码去攻击别人的服务器 如侵权联系作者删除 文中的错误已经修改过来了,谢谢各位爬友指出错误 ...

  6. python爬虫——用selenium爬取淘宝商品信息

    python爬虫--用selenium爬取淘宝商品信息 1.附上效果图 2.淘宝网址https://www.taobao.com/ 3.先写好头部 browser = webdriver.Chrome ...

  7. 利用python爬取天气预报_python实现天气爬虫——利用xpath爬取七天天气预报数据...

    python实现天气爬虫--利用xpath爬取七天天气预报数据 import pandas as pd import lxml import requests import csv from lxml ...

  8. python爬虫:Selenium爬取B站视频标题、播放量、发布时间

    上次尝试了利用Ajax机制爬取B站视频播放量等数据(链接在下方),但是发现响应的JSON数据中没有发布时间的数据,这次决定用Selenium试一下. python爬虫:Ajax爬取B站视频标题.播放量 ...

  9. Python之网络爬虫(selenium爬取动态网页、爬虫案例分析、哈希算法与RSA加密)

    文章目录 一.selenium爬取动态网页 二.爬虫案例分析 三.哈希hash算法与RSA加密 一.selenium爬取动态网页 1.动态网页认知 爬虫其实就是在模仿浏览器的行为 应对要多次数据的交互 ...

最新文章

  1. C++学习基础八——重载输入和输出操作符
  2. [Abp 源码分析]多语言(本地化)处理
  3. python网页表格读取_是否可以读取网页html表格数据?
  4. Go语言基础之1--标识符、关键字、变量和常量、数据类型、Go的基本程序结构、Golang的特性...
  5. ZooKeeper程序员指南--使用ZooKeeper开发分布式应用程序
  6. Linux下手动挂载新增磁盘
  7. python3小游戏源代码_Python入门塔防小游戏,开发步骤和源码,带你轻松学python...
  8. ECMA-262 6th Edition
  9. 电商购物核心架构演进:谁说架构思路会过时?
  10. 编译器的不同,导致运行结果不一样
  11. 操作系统原理实验报告——读者写者
  12. js实现html页面转为pdf下载
  13. Node.js安装详细步骤教程(Windows版)
  14. 谷歌浏览器翻译插件 划词翻译
  15. Linux中vim如何配置,Linux中vim的简单配置
  16. 为何excel中数据无法计算机,Excel中数字无法正常求和怎么办?
  17. 数据库设计 一对多 多对多 无限级菜单 设计方法
  18. 2022-2028年中国汽车转向系统零部件行业发展现状调查及前景战略分析报告
  19. 静电耳机与普通动圈或动铁耳机有什么区别
  20. speedoffice(Word)如何调整页边距

热门文章

  1. C# ORM模式之 SqlSugar使用
  2. 基于 Python/Vue/D2 实现的CRM管理系统(客户管理,产品管理,商机管理,合同管理,客户公海,权限管理等业务模块)
  3. 央视315晚会 惠普“雪花屏”门被搬出 垃圾惠普
  4. android h 游戏下载地址,Android h游戏_如何在Android手机上玩游戏
  5. 网上书城(商品展示)
  6. 新知实验室 腾讯云实时音视频 RTC WEB端初识
  7. 优化大师修复IE右键
  8. 禁止thunderplatform自启动
  9. Dreamweaver CS5支持Html5
  10. 网络工程毕业设计 SSM网上租车系统(源码+论文)