python爬虫——怎么抓取职位信息

这篇具有很好参考价值的文章主要介绍了python爬虫——怎么抓取职位信息。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

背景

为什么要抓取职位信息

怎么抓取职位信息

代码示例

被反爬怎么办

使用代理IP进行爬取

总结


背景

高考刚结束,马上又到了大学生毕业的时候了,各大厂也开始了一波招工潮了,想知道大厂或竞争对手都招些什么人,有什么需求,于是打算爬点职位信息参考下。

python爬虫——怎么抓取职位信息

为什么要抓取职位信息

抓取职位信息有多种用途,其中一些常见的用途包括:

1. 潜在求职者分析:可以通过大数据技术分析人才流动趋势,在哪些城市或公司聚集了多少求职者,有助于企业了解市场竞争状况以及不同城市或行业的人才供需情况。

2. 薪资分析:通过职位信息可以获取不同职位的薪资水平,有助于了解行业薪资标准,提高员工福利和薪酬竞争力,吸引人才。

python爬虫——怎么抓取职位信息

3. 行业趋势分析:通过职位信息可以了解当前所处行业或行业内的热门职位,将来行业的发展趋势和方向,有助于企业制定战略方案和拓展业务。

4. 竞争情报分析:可以了解竞争对手或其他企业的组织架构、员工数量、招聘需求等关键信息,有助于企业了解市场状况和竞争对手的战略规划,提高企业的竞争力。

怎么抓取职位信息

抓取职位信息可以通过网络爬虫技术实现。抓取流程如下:

1. 分析目标网站:首先需要确定目标网站,并观察网站构造和源码,确定需要抓取的职位信息类型和位置。

2. 发送HTTP请求:使用 Python requests 库构造 HTTP 请求,获取页面信息。

3. 解析页面:使用 Python 库 BeautifulSoup 或者正则表达式等工具解析网页。

4. 提取信息:从网页中提取所需职位信息、公司信息及它们的URL等相关信息。

5. 存储信息:将提取到的职位信息进行存储,可以存储在数据库或文件中。

6. 处理反爬:在抓取职位信息时,网站可能会进行反爬措施,需要分析网站反爬机制,采取一定的策略避免被反爬而导致无法获取数据。

python爬虫——怎么抓取职位信息

需要注意的是,抓取职位信息需要遵守法律法规、网站规则和道德准则,避免抓取到敏感信息或侵犯他人隐私等问题。

代码示例

这里以爬取某勾网职位信息为例,示例代码如下:

import requests

from bs4 import BeautifulSoup

import json

import time



def get_positions(city, keyword=None, page_num=1):

    """获取指定城市和职位关键词的职位信息"""

    user_agent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36 Edg/92.0.902.73'

    headers = {'User-Agent': user_agent}

    url = f'https://www.*****.com/jobs/positionAjax.json?needAddtionalResult=false&city={city}&kd={keyword}&pn={page_num}'

    response = requests.get(url, headers=headers)

    if response.status_code == 200:

        result = json.loads(response.text)



        # 解析职位信息

        positions = []

        for job in result['content']['positionResult']['result']:

            position = {}

            position['position_name'] = job['positionName']  # 职位名称

            position['salary'] = job['salary']  # 薪资

            position['company_name'] = job['companyFullName']  # 公司名称

            position['work_year'] = job['workYear']  # 工作年限

            position['education'] = job['education']  # 学历

            position['position_advantage'] = job['positionAdvantage']  # 职位优势



            positions.append(position)



        return positions

    else:

        print(f'请求错误,状态码:{response.status_code}')



if __name__ == '__main__':

    city = '广州'

    keyword = 'Python'

    for page_num in range(1, 6):

        positions = get_positions(city=city, keyword=keyword, page_num=page_num)

        if positions:

            for position in positions:

                print(position)

            

            # 每爬完一页,就休眠一段时间,避免被反爬

            time.sleep(3)

此代码通过分析拉勾网的接口来获取职位信息。可以传入城市名和职位关键词来筛选职位,同时支持分页获取信息。如果想要将职位信息存储在数据库或者文件中,可以将获取到的 positions 写入数据库或文件。相应地,也可以通过增加访问间隔时间、使用代理 IP 等方式来支持反爬。

被反爬怎么办

在爬取职位信息的过程中,如果被目标网站检测到并且反爬,有一些常见的应对措施如下:

1. 降低访问频率:合理减少请求间隔时间,降低对目标网站的访问频率,以防被检测到。

2. 使用代理IP:通过使用代理IP来模拟多个访问来源,降低单个IP被检测到的概率。

python爬虫——怎么抓取职位信息

3. 更换 User-Agent:可以在请求头中改变 User-Agent 的值,模拟不同的浏览器类型,来提高爬虫的隐匿性。

4. 登陆账号:有些网站对未登录用户的爬取有限制,可以使用网站提供的登陆功能,获取更多数据。

5.对抗反爬:一些情况下,网站的反爬手段比较强大,可以通过一些技术手段绕过反爬机制,例如使用图像识别技术识别验证码,模拟人工操作等。

使用代理IP进行爬取

使用代理IP是绕过反爬限制的有效手段之一。代理IP可以提供多个访问来源,避免对目标网站请求过于集中,同时可以提高访问隐匿性,减少被屏蔽的概率。下面是一个使用代理IP来爬取拉勾网职位信息的示例代码:

import requests

from bs4 import BeautifulSoup

import json

import time



# 设置代理IP列表

proxies = [

    {'http': 'http://123.123.123.168:16888', 'https': 'http://123.123.123.168:16888'},

    {'http': 'http://123.123.123.168:16888', 'https': 'http://123.123.123.168:16888'},

    {'http': 'http://123.123.123.168:16888', 'https': 'http://123.123.123.168:16888'},

    # 可以添加更多的代理IP,也可以通过站大爷的API接口源源不断的获取代理IP

]



def get_positions(city, keyword=None, page_num=1, use_proxy=True):

    """获取指定城市和职位关键词的职位信息"""

    user_agent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36 Edg/92.0.902.73'

    headers = {'User-Agent': user_agent}

    url = f'https://www.*****.com/jobs/positionAjax.json?needAddtionalResult=false&city={city}&kd={keyword}&pn={page_num}'



    # 使用代理IP访问

    if use_proxy:

        proxy = random.choice(proxies)

        response = requests.get(url, headers=headers, proxies=proxy)

    else:

        response = requests.get(url, headers=headers)



    if response.status_code == 200:

        result = json.loads(response.text)



        # 解析职位信息

        positions = []

        for job in result['content']['positionResult']['result']:

            position = {}

            position['position_name'] = job['positionName']  # 职位名称

            position['salary'] = job['salary']  # 薪资

            position['company_name'] = job['companyFullName']  # 公司名称

            position['work_year'] = job['workYear']  # 工作年限

            position['education'] = job['education']  # 学历

            position['position_advantage'] = job['positionAdvantage']  # 职位优势



            positions.append(position)



        return positions

    else:

        print(f'请求错误,状态码:{response.status_code}')



if __name__ == '__main__':

    city = '广州'

    keyword = 'Python'

    for page_num in range(1, 6):

        positions = get_positions(city=city, keyword=keyword, page_num=page_num, use_proxy=True)

        if positions:

            for position in positions:

                print(position)

            

            # 每爬完一页,就休眠一段时间,避免被反爬

            time.sleep(3)

此代码通过定义了一个代理IP列表,并使用 `requests` 库的 `proxies` 参数来随机选择代理IP访问目标网站,进而避免单个IP访问过于频繁被目标网站封锁。

需要注意,代理IP的质量和稳定性会直接影响到爬取效果,因此在选择代理IP时需要注意选择稳定性较高的服务商、IP 质量较高的代理IP,比如站大爷代理IP。

python爬虫——怎么抓取职位信息

总结

在进行职位信息爬取时,需要先确定目标网站,并通过分析页面结构和抓包等方式获取到页面 API 接口。接着,通过发送 HTTP 请求获取页面信息,并使用 BeautifulSoup 或正则表达式等工具解析页面获取所需信息。

在整个爬取过程中,应该注意遵守法律法规和道德准则,避免侵犯他人隐私和抓取敏感信息等问题。

同时,对于反爬机制的应对,可以采取一些策略,如降低访问频率、使用代理 IP、更换 User-Agent 、登陆账号、对抗反爬等方法。选择稳定性较高的代理IP服务商,是一个比较关键的选择,也决定了是否能够顺利进行爬取。文章来源地址https://www.toymoban.com/news/detail-487542.html

到了这里,关于python爬虫——怎么抓取职位信息的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 爬虫数据抓取怎么弄?

    爬虫数据抓取是一种自动化的数据采集技术,可以快速、高效地从互联网上获取大量的数据。本文将介绍爬虫数据抓取的基本原理、常用的爬虫框架和工具、爬虫数据抓取的注意事项以及爬虫数据抓取的应用场景。 一、爬虫数据抓取的基本原理 爬虫数据抓取的基本原理是通

    2024年02月05日
    浏览(40)
  • Java爬虫Selenium+Java+ChromeDriver【抓取百度信息】

    selenium 是一个模拟浏览器操作的工具,背后有google 维护源代码,支持全部主流浏览器,支持主流的编程语言,包括:java,Python,C#,PHP,Ruby,等,在本项目上使用的Java语言。 官网:https://www.selenium.dev/documentation/ ChromeDriver 使用selenium是需要浏览器的配合, chromeDriver,是谷歌浏览器的一

    2024年02月02日
    浏览(40)
  • Python爬虫抓取网页

    本节讲解第一个 Python 爬虫实战案例:抓取您想要的网页,并将其保存至本地计算机。 首先我们对要编写的爬虫程序进行简单地分析,该程序可分为以下三个部分: 拼接 url 地址 发送请求 将照片保存至本地 明确逻辑后,我们就可以正式编写爬虫程序了。 本节内容使用 urll

    2024年02月08日
    浏览(49)
  • Python网络爬虫-WebSocket数据抓取

    目录 前言 1、WebSocket请求的分析通常涉及以下几个方面: 2、利用WebSocket爬取数据 总结 最后,创作不易!非常感谢大家的关注、点赞、评论啦!谢谢三连哦!好人好运连连,学习进步!工作顺利哦!  博主介绍:✌专注于前后端、机器学习、人工智能应用领域开发的优质创作

    2024年04月27日
    浏览(43)
  • python爬虫——抓取表格pandas当爬虫用超简单

    pandas还能当爬虫用,你敢信吗?而且超级简单,两行代码就趴下来 只要想提取的表格是属于table 标签内,就可以使用pd.read_html(),它可以将网页上的表格都抓取下来,并以DataFrame的形式装在一个列表中返回。 例子: 比如这个基金网站,想趴下基金的持仓股表格, http://vip.s

    2024年01月23日
    浏览(41)
  • 【Python】【进阶篇】五、Python爬虫的抓取网页

    Python 爬虫应用案例:爬取目标的网页,并将其保存到本地。 对要编写的爬虫程序进行分析,可以简单分为为以下三个部分: 目标 url 地址 发送请求 将响应数据保存至本地 明确逻辑后,我们就可以正式编写爬虫程序了。 在这里我们使用标准库 urllib 库来编写爬虫,导入所需

    2023年04月10日
    浏览(52)
  • 使用Python进行Web抓取和爬虫

    Web抓取和爬虫技术是现代互联网应用中不可或缺的一部分。它们可以帮助我们自动收集和处理大量的网页内容,从而提取有价值的信息。Python是一种强大的编程语言,拥有丰富的第三方库和框架,使得在Python中进行Web抓取和爬虫编程变得非常简单和高效。 本文将从以下几个方

    2024年02月22日
    浏览(44)
  • 【爬虫实践】使用Python从网站抓取数据

            本周我不得不为客户抓取一个网站。我意识到我做得如此自然和迅速,分享它会很有用,这样你也可以掌握这门艺术。 【免责声明:本文展示了我的抓取做法,如果您有更多相关做法请在评论中分享】 确定您的目标:一个简单的 html 网站 在 Python 中设计抓取方案

    2024年02月14日
    浏览(44)
  • 如何使用 Python 爬虫抓取动态网页数据

    随着 Web 技术的不断发展,越来越多的网站采用了动态网页技术,这使得传统的静态网页爬虫变得无能为力。本文将介绍如何使用 Python 爬虫抓取动态网页数据,包括分析动态网页、模拟用户行为、使用 Selenium 等技术。 在进行动态网页爬取之前,我们需要先了解动态网页和静

    2023年04月24日
    浏览(74)
  • Day:006(2 ) | Python爬虫:高效数据抓取的编程技术(爬虫工具)

    窗口的定位: 对于一个现代的web应用,经常会出现框架(frame) 或窗口(window)的应用,这也就给我们的定位带来了一个难题。 有时候我们定位一个元素,定位器没有问题,但一直定位不了,这时候就要检查这个元素是否在一个frame中,seelnium webdriver提供了一个switch_to_fram

    2024年04月12日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包