爬虫案例——爬取腾讯社招

news2024/11/22 16:15:39

案例需求:

1.爬取腾讯社招的数据(搜索 | 腾讯招聘)包括岗位名称+链接+时间+公司名称

2.爬取所有页(翻页)

3.利用jsonpath进行数据解析

4.保存数据:txt文本形式和excel文件两种形式

解析:

1.分析该网站同步还是异步?——异步(查看xhr)

2.找到正确的数据包——看响应内容

248be5ef208a40bf8eed9b2db2160d66.png

3.复制请求地址

https://careers.tencent.com/tencentcareer/api/post/Query?timestamp=1727929418908&countryId=&cityId=&bgIds=&productId=&categoryId=&parentCategoryId=&attrId=&keyword=&pageIndex=3&pageSize=10&language=zh-cn&area=cn

4.删除不必要的,找到正确的(可删可不删)

https://careers.tencent.com/tencentcareer/api/post/Query?

5.该网站反爬手段比较强,给其进行伪装

9294c408ea7e47529546f4b23da1cfef.png

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36'
}
data = {
    'timestamp': '1648355434381',
    'countryId': '',
    'cityId': '',
    'bgIds': '',
    'productId': '',
    'categoryId': '',
    'parentCategoryId': '40001',
    'attrId': '',
    'keyword': '',
    'pageIndex': i,
    'pageSize': '10',
    'language': 'zh-cn',
    'area': 'cn'
}

6.保存在excel文件中,创建对象

wb = workbook.Workbook()  # 创建Excel对象
ws = wb.active  # 激活当前表
ws.append(['职称', '链接', '时间', '公司名称'])

进行excel保存

def save_excel(z,l,s,g):
    my_list = [z,l,s,g]  # 以列表形式写入
    ws.append(my_list)
    wb.save('腾讯社招.xlsx')

进行本地文本保存

def save_text(n,u,t,p):
    with open('腾讯社招.txt','a',encoding='utf-8')as f:
        f.write(n+'\n')
        f.write(u+'\n')
        f.write(t+'\n')
        f.write(p+'\n')

7.使用jsonpath解析数据

names = jsonpath(r, '$..RecruitPostName')
urls = jsonpath(r, '$..PostURL')
times = jsonpath(r, '$..LastUpdateTime')
pronames = jsonpath(r, '$..ProductName')

8.处理解析的数据

for name, url, time, protime in zip(names, urls, times, pronames):
    # print(name,url,time,protime)
    save_text(name, url, time, protime)
    save_excel(name, url, time, protime)

9.翻页分析

c6568a8fa0ff4918a4f0b2b25562e15a.png

for i in range(1,6):
    print("第{}页已经保存完毕!!!".format(i))
    # url = 'https://careers.tencent.com/search.html'
    data = {
        'timestamp': '1648355434381',
        'countryId': '',
        'cityId': '',
        'bgIds': '',
        'productId': '',
        'categoryId': '',
        'parentCategoryId': '40001',
        'attrId': '',
        'keyword': '',
        'pageIndex': i,
        'pageSize': '10',
        'language': 'zh-cn',
        'area': 'cn'
    }

示例代码:

import requests
from jsonpath import jsonpath
from openpyxl import workbook
import time
#"http://careers.tencent.com/jobdesc.html?postId=1685827130673340416"
def get_data():
    response = requests.get(url, headers=headers, params=data)
    r = response.json()
    return r

def parse_data(r):
    names = jsonpath(r, '$..RecruitPostName')
    urls = jsonpath(r, '$..PostURL')
    times = jsonpath(r, '$..LastUpdateTime')
    pronames = jsonpath(r, '$..ProductName')
    for name, url, time, protime in zip(names, urls, times, pronames):
        # print(name,url,time,protime)
        save_text(name, url, time, protime)
        save_excel(name, url, time, protime)
# 保存数据
def save_text(n,u,t,p):
    with open('腾讯社招.txt','a',encoding='utf-8')as f:
        f.write(n+'\n')
        f.write(u+'\n')
        f.write(t+'\n')
        f.write(p+'\n')

def save_excel(z,l,s,g):
    my_list = [z,l,s,g]  # 以列表形式写入
    ws.append(my_list)
    wb.save('腾讯社招.xlsx')
if __name__ == '__main__':
    wb = workbook.Workbook()  # 创建Excel对象
    ws = wb.active  # 激活当前表
    ws.append(['职称', '链接', '时间', '公司名称'])
    url = 'https://careers.tencent.com/tencentcareer/api/post/Query?'
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36'
    }
    for i in range(1,6):
        print("第{}页已经保存完毕!!!".format(i))
        # url = 'https://careers.tencent.com/search.html'
        data = {
            'timestamp': '1648355434381',
            'countryId': '',
            'cityId': '',
            'bgIds': '',
            'productId': '',
            'categoryId': '',
            'parentCategoryId': '40001',
            'attrId': '',
            'keyword': '',
            'pageIndex': i,
            'pageSize': '10',
            'language': 'zh-cn',
            'area': 'cn'
        }
        time.sleep(2)
        h=get_data()
        parse_data(h)

 运行结果:

5b297631782349a3ab87c4ec5bea1552.png

2280fac13247497694425f4fa7d9f1bd.png

e4b08dce72b94653b76aa69e630d34b5.png

同样也可以添加代理来进行

添加代理

zhima_api = 'http://http.tiqu.letecs.com/getip3?num=1&type=1&pro=&city=0&yys=0&port=1&pack=225683&ts=0&ys=0&cs=0&lb=1&sb=0&pb=4&mr=1&regions=&gm=4'
proxie_ip = requests.get(zhima_api).json()['data'][0]
print(proxie_ip)
# 将提取后的IP处理成字典形式 构造完整HTTP代理
proxies = {
        'http': 'http://' + str(proxie_ip['ip']) + ':' + str(proxie_ip['port']),
        #'https': 'https://' + str(proxie_ip['ip']) + ':' + str(proxie_ip['port'])
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2198138.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

9.16贪心算法

定义:贪心算法是一种逐步构建解决方案的算法,每次选择当前最优的局部解,期望通过局部最优解的累积,最终获得全局最优解​​​​​​典型例题: 1.找零问题--蓝桥云课 解决方案:先找大额,再找小额…

FreeRTOS学习笔记内置部分公司面试题目(更新中)

1. 简介 1.1 RTOS简介 RTOS(实时操作系统)是指一类系统,如 FreeRTOS,uC/OS,RTX,RT-Thread 等,都是 RTOS 类操作系统。 FreeRTOS 由美国的 Richard Barry 于 2003 年发布。 FreeRTOS 于 2017 年被亚马逊收购&#x…

【EXCEL数据处理】000022 案例 保姆级教程,附多个操作案例。EXCEL邮件合并工具

前言:哈喽,大家好,今天给大家分享一篇文章!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 目录 【EXCEL数据处理】000022 案例 保姆级教程,附多个操作案例。…

如何基于 RLHF 来优化 ChatGPT 类型的大语言模型

🚴前言 对于ChatGPT来说,RLHF是其训练的核心。所谓RLHF,即Reinforcement Learning with Human Feedback,基于人类反馈的强化学习。这项技术通过结合模型自身的生成能力和人类专家的反馈,为改进文本生成质量提供了新的…

云计算Openstack Horizon

OpenStack是一个开源的云计算平台,提供了构建和管理云计算环境所需的软件工具。而Horizon则是OpenStack的一个关键组件,它是基于Web的用户界面,为用户提供了一种直观、便捷的方式来管理和使用OpenStack资源。 一、技术原理 Horizon是一个基…

CloudStack计算节点配置

主机信息 CloudStack计算节点 任务1、计算节点基础环境准备 1)需要创建2张网卡!!!】 2)VMware Workstation 中设置网卡模式为NAT,在“网络编辑器”中设置DHCP,网关设置为192.168.100.1,地址段为192.168.…

【记录】PPT|PPT 箭头相交怎么跨过

众所周知,在PPT中实现“跨线”效果并非直接可行,这一功能仅存在于Visio中。然而,通过一些巧妙的方法,我们可以在PPT中模拟出类似的效果。怎么在PPT中画交叉但不重叠的线-百度经验中介绍了一种方法,而本文将介绍一种改进…

初探OceanBase 4.x单机环境下如何进行主备架构搭建

本文来自OceanBase 用户的体验分享 (以下简称 OB),已经开源了3年左右,其间从3.x版本演进至4.x版本,发生了许多变化。对一个DBer而言,最为关切的是如何高效运用OB,以及是否能实现如同应用MySQL般…

计算机毕业设计 基于Hadoop的智慧校园数据共享平台的设计与实现 Python毕业设计 Python毕业设计选题 Spark 大数据【附源码+安装调试】

博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ 🍅文末获取源码联系🍅 👇🏻 精…

解析一体式IO与分布式IO:从架构到应用

在工业自动化领域,IO(输入/输出)系统扮演着举足轻重的角色。它们不仅负责数据的采集和控制指令的发送,还直接影响到系统的灵活性、可靠性和成本效益。明达技术将为您介绍一体式IO和分布式IO在架构及应用层的主要区别,帮…

Unity 从零开始的框架搭建1-1 unity中对象调用的三种方式的优缺点分析【干货】

该文章专栏是向QFrameWork作者凉鞋老师学习总结得来,吃水不忘打井人,不胜感激 Unity 框架搭建学习笔记1-1,前一个1代表凉鞋的第一季教程,后一个1代表该季第一篇我的文章 unity中对象调用的三种方式 方法调用,例如&…

计算机毕业设计 基于Python的智能停车系统的设计与实现 Python+Django+Vue 前后端分离 附源码 讲解 文档

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点…

对高危漏洞“Docker Engine API is accessible without authentication”的修复

一.背景 之前文章maven项目容器化运行之1-基于1Panel软件将docker镜像构建能力分享给局域网_1panel 构建镜像-CSDN博客将1Panel软件的Doocker端口给到了局域网,安全组兄弟扫描认为是高危漏洞,可能导致攻击者获取对Docker主机的完全控制权。 二.修复的建…

单兵可背负履带式全地形无人车技术详解

单兵可背负履带式全地形无人车是一种专为复杂环境和多样化任务设计的智能装备,具备出色的地面适应性、越野性能以及灵活的操控性。以下是对其技术的详细解析: 一、驱动技术 履带式驱动:采用履带式驱动技术,通过履带与地面的广泛…

动手学深度学习9.3. 深度循环神经网络-笔记练习(PyTorch)

本节课程地址:58 深层循环神经网络【动手学深度学习v2】_哔哩哔哩_bilibili 本节教材地址:9.3. 深度循环神经网络 — 动手学深度学习 2.0.0 documentation (d2l.ai) 本节开源代码:...>d2l-zh>pytorch>chapter_multilayer-perceptr…

计算机毕业设计 基于Flask+vue的博客系统的设计与实现 Python毕业设计 Python毕业设计选题 Flask框架 Vue【附源码+安装调试】

博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ 🍅文末获取源码联系🍅 👇🏻 精…

数据结构-4.5.KMP算法(旧版上)-朴素模式匹配算法的优化

朴素模式匹配算法最坏的情况: 一.实例: 第一轮匹配失败,开始下一轮的匹配: 不断的操作,最终匹配成功: 如上述图片所述,朴素模式匹配算法会导致时间开销增加, 优化思路:主…

Java:数据结构-List的介绍 ArrayList和顺序表(1)

一 List的介绍 1.什么是List? List是一个接口,继承于Collection。 Collection也是一个接口 Lterable也是一个接口,表示实现该接口的类是可以逐个元素遍历的类。 2.List的使用 List是一个接口,不能被实例化,ArrayL…

falcon调研的CSIG

CSIG (Congestion Signaling) C是Congestion, SIG是 Signaling的简写,的机制: 本质是带内遥测 沿着L2一路可以实现更新,原文:This summarizedinformation is collected over L2 CSIG-tags in a compare-and-replace manner acro…

谢希仁计算机网络 (四)—— 网络层

计算机网络(四)—— 网络层(1、2):网络层概述、网络层提供的两种服务 计算机网络(四)—— 网络层(1、2):网络层概述、网络层提供的两种服务_以下属于网络层范…