iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python中selenium如何实现智联招聘数据爬取
  • 180
分享到

python中selenium如何实现智联招聘数据爬取

2023-06-14 18:06:59 180人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

这篇文章将为大家详细讲解有关python中selenium如何实现智联招聘数据爬取,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Python可以做什么Python是一种编程语言,内置了许多有效的工具,Py

这篇文章将为大家详细讲解有关pythonselenium如何实现智联招聘数据爬取,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

Python可以做什么

Python是一种编程语言,内置了许多有效的工具,Python几乎无所不能,该语言通俗易懂、容易入门、功能强大,在许多领域中都有广泛的应用,例如最热门的大数据分析人工智能web开发等。

一、主要目的

最近在玩Python网络爬虫,然后接触到了selenium这个模块,就捉摸着搞点有意思的,顺便记录一下自己的学习过程。

二、前期准备

  • 操作系统windows10

  • 浏览器:谷歌浏览器(Google Chrome)

  • 浏览器驱动:chromedriver.exe (我的版本—>89.0.4389.128 )

  • 程序中我使用的模块

import csvimport osimport reimport JSONimport timeimport requestsfrom selenium.WEBdriver import Chromefrom selenium.webdriver.remote.webelement import WebElementfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.support import uifrom selenium.webdriver.support import expected_conditionsfrom lxml import etreechrome = Chrome(executable_path='chromedriver')
  • 用的的第三方包均可用 pip install 进行安装

  • 上面代码中的最后一行表示创建一个浏览器对象

三、思路分析

1.大致看了一下网站主页,需要先登录后才能进行信息的获取,所以只能先模拟登录。

python中selenium如何实现智联招聘数据爬取
python中selenium如何实现智联招聘数据爬取
python中selenium如何实现智联招聘数据爬取

进入登录页面的时候是显示二维码登录,我们不用这个,因为确实不怎么方便,我们通过模拟点击页面上的按钮进入到账号、密码登录的页面输入进行登录。下面是如何驱动浏览器进行上述的一系列操作⬇⬇⬇⬇⬇⬇

# 获取登录页面chrome.get(url)# 找出账号密码登录的页面chrome.find_element_by_class_name('zppp-panel-qrcode-bar__triangle').click()chrome.find_element_by_xpath('//div[@class="zppp-panel-nORMal__inner"]/ul/li[2]').click()# 找到账户密码的交互接口并进行输入user_name = chrome.find_elements_by_xpath('//div[@class="zppp-input__container"]/input')[0]pass_Word = chrome.find_elements_by_xpath('//div[@class="zppp-input__container"]/input')[1]# 进行需要登录的账号密码输入user_name.send_keys('**********')  pass_word.send_keys('***********')# 输入完成后点击登录chrome.find_element_by_class_name('zppp-submit').click()# 此处手动实现滑块验证# 动动你的小鼠标

2.登陆后大致看了一下主页决定先从城市开始爬,在它的原文件中分析出它的位置,如图↓

python中selenium如何实现智联招聘数据爬取

我用的是requests请求获取到网页原文件,再使用正则匹配到我们需要的内容(就是上图中那一坨红色的↑),之后再进行一系列的解析获取到每个城市与其对应的url ⬇⬇⬇⬇⬇⬇

resp = requests.get(url, headers=headers)    if resp.status_code == 200:        html = resp.text        json_data = re.search(r'<script>__INITIAL_STATE__=(.*?)</script>', html).groups()[0]        data = json.loads(json_data)        cityMapList = data['cityList']['cityMapList']  # dict        for letter, citys in cityMapList.items():            # print(f'-----{letter}-------')            for city in citys:  # citys 是个列表,里面嵌套的字典                '''                {                    'name': '鞍山',                    'url': '//www.zhaopin.com/anshan/',                    'code': '601',                    'pinyin': 'anshan'               }                '''                city_name = city['name']                city_url = 'https:' + city['url']

此处我们获取的是所有的城市和它url,如果都要进行爬取的话数据量略大,因此我们可以筛选出需要爬取的城市减轻工作量,反正爬取城市我们想怎么改就怎么改哈哈哈哈哈。

3.接下来我们就可以进行工作的查找了,既然我们用的是Python来爬取的,那就查询Python相关的工作吧。

python中selenium如何实现智联招聘数据爬取

首先还是要找到输入搜索信息的框框并找出它的接口,然后进行输入(这里输入的是Python),输入完成后找到右边的搜索按钮(就是那个放大镜)进行点击操作,下面是模拟浏览器操作的代码实现⬇⬇⬇⬇⬇

# 根据class_name 查询WebElement找出输入的位置input_seek: WebElement = chrome.find_element_by_class_name('zp-search__input')input_seek.send_keys('Python')  # 输入Pythonclick: WebElement =     # 找出搜索按钮并点击    chrome.find_element_by_xpath('//div[@class="zp-search__common"]//a')  click.click()chrome.switch_to.window(chrome.window_handles[1])

这里就有一个需要注意的地方了:在输入Python点击搜索按钮后会弹出一个新的窗口,而驱动浏览器的 程序还在第一个窗口,因此需要使用 swiitch_to_window(chrome.window_handles[n]) --<n表示目标窗口的 位置,最开始的第一个窗口是0> 方法进行窗口的切换。

4.数据的解析和提取

python中selenium如何实现智联招聘数据爬取

很明显可以看出需要的信息都在 class="positionlist "下,进一步分析可知数据都在 a标签下,接下来就可以使用Xpath进行数据的提取⬇⬇⬇⬇⬇

root = etree.HTML(html)    divs = root.xpath('//div[@class="positionlist"]')  # element对象    for div in divs:           # 岗位     # 里面对应的是一个个列表        position = div.xpath('.//a//div[@class="iteminfo__line1__jobname"]/span[1]')           # 公司        company = div.xpath('//a//div[@class="iteminfo__line1__compname"]/span/text()')         # 薪资        money = div.xpath('.//a//div[@class="iteminfo__line2__jobdesc"]/p/text()')           # 位置        city = div.xpath('//a//div[@class="iteminfo__line2__jobdesc"]/ul/li[1]/text()')         # 经验        experience =               div.xpath('.//a//div[@class="iteminfo__line2__jobdesc"]/ul/li[2]/text()')         # 学历        education =    div.xpath('.//a//div[@class="iteminfo__line2__jobdesc"]/ul/li[3]/text()')           # 规模        scale = div.xpath('.//a//div[@class="iteminfo__line2__compdesc"]/span[1]/text()')          # 人数        people = div.xpath('.//a//div[@class="iteminfo__line2__compdesc"]/span[2]/text()')

5.获取下一页

python中selenium如何实现智联招聘数据爬取

找到下一页按钮并模拟浏览器进行点击,获取到每一页所有的数据。

四、具体源代码

import csvimport osimport reimport jsonimport timeimport requestsfrom selenium.webdriver import Chromefrom selenium.webdriver.remote.webelement import WebElementfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.support import uifrom selenium.webdriver.support import expected_conditionsfrom lxml import etreechrome = Chrome(executable_path='chromedriver')# 模拟登录def login(url):    # 获取登录页面    chrome.get(url)    # 找出账号密码登录的页面    chrome.find_element_by_class_name('zppp-panel-qrcode-bar__triangle').click()    chrome.find_element_by_xpath('//div[@class="zppp-panel-normal__inner"]/ul/li[2]').click()    # 找到账户密码的交互接口并进行输入    user_name = chrome.find_elements_by_xpath('//div[@class="zppp-input__container"]/input')[0]    pass_word = chrome.find_elements_by_xpath('//div[@class="zppp-input__container"]/input')[1]    # 此处输入登录智联招聘的账号密码    user_name.send_keys('***********')    pass_word.send_keys('**********')    # 输入完成后点击登录    chrome.find_element_by_class_name('zppp-submit').click()    # 此处手动实现滑块验证    # 动动手指滑一划完成登录    time.sleep(10)    get_allcity('Https://www.zhaopin.com/citymap')    # 在登录状态下进行所有城市信息的获取def get_allcity(url):    resp = requests.get(url, headers=headers)    if resp.status_code == 200:        html = resp.text        json_data = re.search(r'<script>__INITIAL_STATE__=(.*?)</script>', html).groups()[0]        data = json.loads(json_data)        cityMapList = data['cityList']['cityMapList']  # dict        for letter, citys in cityMapList.items():            # print(f'-----{letter}-------')            for city in citys:  # citys 是个列表,里面嵌套的字典                '''                {                    'name': '鞍山',                    'url': '//www.zhaopin.com/anshan/',                    'code': '601',                    'pinyin': 'anshan'               }                '''                city_name = city['name']                city_url = 'https:' + city['url']                # 筛选城市                query_citys = ('成都')                if city_name in query_citys:                    print(f'正在获取{city_name}的信息')                    get_city_job(city_url)                    time.sleep(3)                else:                    # print(f'{city_name} 不在搜索范围内!')                    pass    else:        print('网页获取失败')def get_city_job(url):    chrome.get(url)  # 打开城市信息    # 根据class_name 查询WebElement找出输入的位置    input_seek: WebElement = chrome.find_element_by_class_name('zp-search__input')    input_seek.send_keys('Python')  # 输入Python    click: WebElement = chrome.find_element_by_xpath('//div[@class="zp-search__common"]//a')  # 找出搜索按钮并点击    click.click()    # 切换到第二个页面    chrome.switch_to.window(chrome.window_handles[1])    time.sleep(1)    time.sleep(1)    # 等待class_name为“sou-main__list” div元素出现    ui.WebDriverWait(chrome, 30).until(        expected_conditions.visibility_of_all_elements_located((By.CLASS_NAME, 'sou-main__list')),        '查找的元素一直没有出现'    )    # 判断当前查询结果是否不存在    no_content = chrome.find_elements_by_class_name('positionlist')    if not no_content:        print('当前城市未查找到Python岗位')    else:        # 提取查找结果        parse(chrome.page_source)def parse(html):    root = etree.HTML(html)    divs = root.xpath('//div[@class="positionlist"]')  # element对象    items = {}    for div in divs:        # 岗位        position = div.xpath('.//a//div[@class="iteminfo__line1__jobname"]/span[1]')           # 公司        company = div.xpath('//a//div[@class="iteminfo__line1__compname"]/span/text()')         # 薪资        money = div.xpath('.//a//div[@class="iteminfo__line2__jobdesc"]/p/text()')          # 位置        city = div.xpath('//a//div[@class="iteminfo__line2__jobdesc"]/ul/li[1]/text()')         # 经验        experience =  div.xpath('.//a//div[@class="iteminfo__line2__jobdesc"]/ul/li[2]/text()')          # 学历        education =  div.xpath('.//a//div[@class="iteminfo__line2__jobdesc"]/ul/li[3]/text()')           # 规模        scale = div.xpath('.//a//div[@class="iteminfo__line2__compdesc"]/span[1]/text()')          # 人数        people = div.xpath('.//a//div[@class="iteminfo__line2__compdesc"]/span[2]/text()')         for position_, company_, money_, city_, experience_, education_, scale_, people_ in zip(position, company,                                                                                                money, city, experience,                                                                                                education, scale,                                                                                                people):            # title="python爬虫工程师" 获取它的title属性值            string = position_.attrib.get('title')              items['position'] = string            items['company'] = company_            items['money'] = money_.strip()            items['city'] = city_            items['experience'] = experience_            items['education'] = education_            items['scale'] = scale_            items['people'] = people_            itempipeline(items)    # 获取下一页    next_page()def itempipeline(items):    has_header = os.path.exists(save_csv)  # 文件头    with open(save_csv, 'a', encoding='utf8') as file:        writer = csv.DictWriter(file, fieldnames=items.keys())        if not has_header:            writer.writeheader()  # 写入文件头        writer.writerow(items)def next_page():    # 找到下一页按钮    time.sleep(0.5)    button = chrome.find_elements_by_xpath('//div[@class="soupager"]/button[@class="btn soupager__btn"]')    if not button:        print(f'获取完毕,请在 {save_csv} 里查看!!')        exit()    else:        button[0].click()  # 点击下一页        time.sleep(1)        parse(chrome.page_source)if __name__ == '__main__':    n = 0    headers = {        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3823.400 QQBrowser/10.7.4307.400',        'Cookie': 'aQQ_ajkguid=B4D4C2CC-2F46-D252-59D7-83356256A4DC; id58=e87rkGBclxRq9+GOJC4CAg==; _ga=GA1.2.2103255298.1616680725; 58tj_uuid=4b56b6bf-99a3-4dd5-83cf-4db8f2093fcd; wmda_uuid=0f89f6f294d0f974a4e7400c1095354c; wmda_new_uuid=1; wmda_visited_projects=%3B6289197098934; als=0; cmctid=102; ctid=15; sessid=E454865C-BA2D-040D-1158-5E1357DA84BA; twe=2; isp=true; _gid=GA1.2.1192525458.1617078804; new_uv=4; obtain_by=2; xxzl_cid=184e09dc30c74089a533faf230f39099; xzuid=7763438f-82bc-4565-9fe8-c7a4e036c3ee'    }    save_csv = 'chengdu-python.csv'    login(        'https://passport.zhaopin.com/login?bkUrl=%2F%2Fi.zhaopin.com%2Fblank%3Fhttps%3A%2F%2Fwww.zhaopin.com%2Fbeijing%2F')

五、部分成果展示

python中selenium如何实现智联招聘数据爬取

关于“python中selenium如何实现智联招聘数据爬取”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

--结束END--

本文标题: python中selenium如何实现智联招聘数据爬取

本文链接: https://www.lsjlt.com/news/274090.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • python selenium实现智联招聘数据爬取
    目录一、主要目的二、前期准备三、思路分析四、具体源代码五、部分成果展示六、总结一、主要目的 最近在玩Python网络爬虫,然后接触到了selenium这个模块,就捉摸着搞点有意思的,...
    99+
    2024-04-02
  • python中selenium如何实现智联招聘数据爬取
    这篇文章将为大家详细讲解有关python中selenium如何实现智联招聘数据爬取,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。python可以做什么Python是一种编程语言,内置了许多有效的工具,Py...
    99+
    2023-06-14
  • 怎么用Python爬虫抓取智联招聘
    今天就跟大家聊聊有关怎么用Python爬虫抓取智联招聘,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。对于每个上班族来说,总要经历几次换工作,如何在网上挑到心仪的工作?如何提前为心仪工...
    99+
    2023-06-17
  • Python实现爬取腾讯招聘网岗位信息
    目录介绍效果展示实现思路源码展示介绍 开发环境 Windows 10 python3.6 开发工具 pycharm 库 numpy、matplotlib、time、xlutils.c...
    99+
    2024-04-02
  • Python数据分析之Python和Selenium爬取BOSS直聘岗位
    目录一、数据爬取的代码二、获取到的数据如图所示三、数据分析的代码四、学历分析五、工作经验分析六、14个热门城市的各区县招聘薪资情况七、各城市各区县的薪资情况八、技能栈一、数据爬取的代...
    99+
    2024-04-02
  • Python怎么实现爬取腾讯招聘网岗位信息
    本篇内容主要讲解“Python怎么实现爬取腾讯招聘网岗位信息”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python怎么实现爬取腾讯招聘网岗位信息”吧!介绍开发环境Windows 10pyth...
    99+
    2023-06-22
  • 详解如何使用Python网络爬虫获取招聘信息
    目录前言项目目标项目准备反爬措施项目实现效果展示小结前言 现在在疫情阶段,想找一份不错的工作变得更为困难,很多人会选择去网上看招聘信息。可是招聘信息有一些是错综复杂的。而且不能把全部...
    99+
    2024-04-02
  • 如何用Python采集腾讯招聘数据
    这篇文章将为大家详细讲解有关如何用Python采集腾讯招聘数据,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。今天我们爬取腾讯招聘网站Python岗位的招聘信息。如图所示:然后还是先看一下最终...
    99+
    2023-06-15
  • Python实战使用Selenium爬取网页数据
    目录一. 什么是Selenium?二. 安装Selenium三. 爬取网页数据四. 模拟用户交互五. 处理动态加载内容1. 显式等待2. 隐式等待六. 小结一. 什么是Seleniu...
    99+
    2023-05-18
    Python Selenium爬取网页数据 Python Selenium
  • Python爬虫实战演练之采集拉钩网招聘信息数据
    目录本文要点:环境介绍本次目标爬虫块使用内置模块:第三方模块:代码实现步骤: (爬虫代码基本步骤)开始代码导入模块发送请求解析数据加翻页保存数据运行代码,得到数据本文要点: ...
    99+
    2024-04-02
  • 怎么在python中利用Selenium+Requests爬取数据
    本篇文章给大家分享的是有关怎么在python中利用Selenium+Requests爬取数据,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。python的数据类型有哪些pytho...
    99+
    2023-06-14
  • Selenium+Tesseract-OCR智能识别验证码爬取网页数据的实例
    目录1.项目需求描述2.整体思路3.功能实现1.项目需求描述 通过订单号获取某系统内订单的详细数据,不需要账号密码的登录验证,但有图片验证码的动态识别,将获取到的数据存到数据库。 ...
    99+
    2024-04-02
  • Python中如何爬取京东商品数据并实现数据可视化
    这篇文章将为大家详细讲解有关Python中如何爬取京东商品数据并实现数据可视化,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、开发工具Python版本:3.6.4相关模块:DecryptLogin模块;...
    99+
    2023-06-15
  • python爬虫如何获取数据
    使用Python爬虫获取数据可以分为以下几个步骤: 导入所需的库:通常情况下,使用requests库发送HTTP请求获取网页内容,...
    99+
    2024-02-29
    python
  • Python 爬虫:如何用 BeautifulSoup 爬取网页数据
    在网络时代,数据是最宝贵的资源之一。而爬虫技术就是一种获取数据的重要手段。Python 作为一门高效、易学、易用的编程语言,自然成为了爬虫技术的首选语言之一。而 BeautifulSoup 则是 Py...
    99+
    2023-10-23
    python 爬虫 beautifulsoup
  • 如何用Python爬取天气数据
    本篇内容主要讲解“如何用Python爬取天气数据”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何用Python爬取天气数据”吧!一、[知识点]:  ...
    99+
    2024-04-02
  • 如何用python爬取网页数据
    要用Python爬取网页数据,可以使用Python的一些库和模块,例如requests、BeautifulSoup和Scrapy等。...
    99+
    2023-10-12
    python
  • python爬虫如何爬取微博粉丝数据
    这篇文章主要介绍了python爬虫如何爬取微博粉丝数据,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。python可以做什么Python是一种编程语言,内置了许多有效的工具,P...
    99+
    2023-06-14
  • python如何实现逆向微信指数爬取
    这篇文章给大家分享的是有关python如何实现逆向微信指数爬取的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。微信指数爬取 Appium + mitmproxy + 网易mumu安卓模拟器实现微信指数小程...
    99+
    2023-06-29
  • python爬虫之教你如何爬取地理数据
    目录一、shapely模块1、shapely2、point→Point类3、导入所需模块4、Point(1)、创建point,主要有以下三种方法(2)、point常用属性(3)、po...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作