爬虫入门经典(十三) | 一文教你简单爬取腾讯招聘

不温卜火 等级 351 0 0

  大家好,我是不温卜火,是一名计算机学院大数据专业大三的学生,昵称来源于成语—不温不火,本意是希望自己性情温和。作为一名互联网行业的小白,博主写博客一方面是为了记录自己的学习过程,另一方面是总结自己所犯的错误希望能够帮助到很多和自己一样处于起步阶段的萌新。但由于水平有限,博客中难免会有一些错误出现,有纰漏之处恳请各位大佬不吝赐教!暂时只在csdn这一个平台进行更新,博客主页:https://buwenbuhuo.blog.csdn.net/爬虫入门经典(十三) | 一文教你简单爬取腾讯招聘

PS:由于现在越来越多的人未经本人同意直接爬取博主本人文章,博主在此特别声明:未经本人允许,禁止转载!!!

目录


爬虫入门经典(十三) | 一文教你简单爬取腾讯招聘


推荐

爬虫入门经典(十三) | 一文教你简单爬取腾讯招聘
  ♥各位如果想要交流的话,可以加下QQ交流群:974178910,里面有各种你想要的学习资料。♥

  ♥欢迎大家关注公众号【不温卜火】,关注公众号即可以提前阅读又可以获取各种干货哦,同时公众号每满1024及1024倍数则会抽奖赠送机械键盘一份+IT书籍1份哟~♥
爬虫入门经典(十三) | 一文教你简单爬取腾讯招聘
刚刚经过了豆瓣电影的爬取,你是不是有点懵逼呢?那么博主今天带来一篇较为简单得动态html数据采集的文章。

今天我们来爬取腾讯招聘的相关信息。

链接:https://careers.tencent.com/search.html
爬虫入门经典(十三) | 一文教你简单爬取腾讯招聘

一、网页分析

首先我们打开链接,如下图:
爬虫入门经典(十三) | 一文教你简单爬取腾讯招聘
通过查看源码,我们发现其并不是静态网页,因此可以初步判定其为动态网页
爬虫入门经典(十三) | 一文教你简单爬取腾讯招聘
这样我们的方向就明朗起来了。我们只需找到API接口就可以获取数据。打开开发者选项,通过查找找到我们的API接口
爬虫入门经典(十三) | 一文教你简单爬取腾讯招聘
爬虫入门经典(十三) | 一文教你简单爬取腾讯招聘

到这里分析已经完成了,那么接下来先尝试获取整个接口信息。因为我们只有先获取数据才有可能继续下一步操作。

# encoding: utf-8
'''
  @author 李华鑫
  @create 2020-10-19 12:28
  Mycsdn:https://buwenbuhuo.blog.csdn.net/
  @contact: 459804692@qq.com
  @software: Pycharm
  @file: test.py
  @Version:1.0

'''
import requests

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

headers = {
    "user-agent": "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36",
}

def parse_json(url, params={}):
    """解析url,得到字典"""
    response = requests.get(url=url, headers=headers, params=params)
    return response.json()

content = parse_json(url)
print(content) 

爬虫入门经典(十三) | 一文教你简单爬取腾讯招聘
爬虫入门经典(十三) | 一文教你简单爬取腾讯招聘
🆗,看来我们是成功获取到数据了。

下面我们来分析下,每一页URL之间的关系。

首先,我们看下其中几个URL

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

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

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

爬虫入门经典(十三) | 一文教你简单爬取腾讯招聘
通过对比,我们发现只有pageIndex有变化,那么我们现在可以验证下猜想
爬虫入门经典(十三) | 一文教你简单爬取腾讯招聘
爬虫入门经典(十三) | 一文教你简单爬取腾讯招聘

通过对比,验证了我们的猜想。下面我们就只需要看总共有多少页即可
爬虫入门经典(十三) | 一文教你简单爬取腾讯招聘
分析了页数,那么如果想要循环爬取全部网页,只需进行拼接即可

for i in range(1,635):
    params["pageIndex"] = i 

二、功能实现

爬虫入门经典(十三) | 一文教你简单爬取腾讯招聘

2.1 拼接URL

通过上述的分析,我们知道只需修改每回的pageIndex即可。

首先我们先把需要拼接的部分复制出来
爬虫入门经典(十三) | 一文教你简单爬取腾讯招聘
让其转换成字典的方式

xx="""timestamp: 1603081773061
countryId: 
cityId: 
bgIds: 
productId: 
categoryId: 
parentCategoryId: 
attrId: 
keyword: 
pageIndex: 2
pageSize: 10
language: zh-cn
area: cn"""
xx = xx.splitlines()
params = {}
for x in xx:
    print(x.split(":"))
    params[x.split(":")[0]] = x.split(":")[1]

from pprint import pprint
pprint(params) 

爬虫入门经典(十三) | 一文教你简单爬取腾讯招聘

下面就开始代码实现此部分

params = {'area': ' cn',
          'attrId': ' ',
          'bgIds': ' ',
          'categoryId': ' ',
          'cityId': ' ',
          'countryId': ' ',
          'keyword': ' ',
          'language': ' zh-cn',
          'pageIndex': ' 1',
          'pageSize': ' 10',
          'parentCategoryId': ' ',
          'productId': ' ',
          'timestamp': ' 1602211262824'}

def parse_json(url, params={}):
    """解析url,得到字典"""
    response = requests.get(url=url, headers=headers, params=params)
    return response.json()

def start():
    for i in range(1,635):
        params["pageIndex"] = i

if __name__ == '__main__':
    start() 

2.2 获取数据

爬虫入门经典(十三) | 一文教你简单爬取腾讯招聘
由于之前已经讲解过此部分,因此此处只给出代码

def get_position(data):
    """获取职位数据"""
    item = {
        "postion_name":"",#职位名称
        "postion_department":"",#职位部门
        "postion_location":"",#职位所在地
        "postion_country":"",#职位所在国家
        "postion_category":"",#职位类别
        "postion_responsibility":"",#职位职责
        "postion_url":"",#职位url
    }
    data_list = data["Data"]["Posts"]
    for data in data_list:
        item["postion_name"] = data["RecruitPostName"]
        item["postion_department"] = data["BGName"]
        item["postion_location"] = data["LocationName"]
        item["postion_country"] = data["CountryName"]
        item["postion_category"] = data["CategoryName"]
        item["postion_responsibility"] = data["Responsibility"]
        item["postion_url"] = data["PostURL"] 

三、完整代码

爬虫入门经典(十三) | 一文教你简单爬取腾讯招聘

# encoding: utf-8
'''
  @author 李华鑫
  @create 2020-10-09 9:38
  Mycsdn:https://buwenbuhuo.blog.csdn.net/
  @contact: 459804692@qq.com
  @software: Pycharm
  @file: 腾讯招聘.py
  @Version:1.0

'''
import requests
import csv

url = "https://careers.tencent.com/tencentcareer/api/post/Query"

headers = {
    "user-agent": "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36",
}

params = {'area': ' cn',
          'attrId': ' ',
          'bgIds': ' ',
          'categoryId': ' ',
          'cityId': ' ',
          'countryId': ' ',
          'keyword': ' ',
          'language': ' zh-cn',
          'pageIndex': ' 1',
          'pageSize': ' 10',
          'parentCategoryId': ' ',
          'productId': ' ',
          'timestamp': ' 1602211262824'}

def parse_json(url, params={}):
    """解析url,得到字典"""
    response = requests.get(url=url, headers=headers, params=params)
    return response.json()

def get_position(data):
    """获取职位数据"""
    item = {
        "postion_name":"",#职位名称
        "postion_department":"",#职位部门
        "postion_location":"",#职位所在地
        "postion_country":"",#职位所在国家
        "postion_category":"",#职位类别
        "postion_responsibility":"",#职位职责
        "postion_url":"",#职位url
    }
    data_list = data["Data"]["Posts"]
    for data in data_list:
        item["postion_name"] = data["RecruitPostName"]
        item["postion_department"] = data["BGName"]
        item["postion_location"] = data["LocationName"]
        item["postion_country"] = data["CountryName"]
        item["postion_category"] = data["CategoryName"]
        item["postion_responsibility"] = data["Responsibility"]
        item["postion_url"] = data["PostURL"]

        save(item)
        print(item)
        print("保存完成")

def save(item):
    """将数据保存到csv中"""
    with open("./腾讯招聘.csv", "a", encoding="utf-8") as file:
        writer = csv.writer(file)
        writer.writerow(item.values())

def start():
    for i in range(1,635):
        params["pageIndex"] = i
        data = parse_json(url,params)
        get_position(data)

if __name__ == '__main__':
    start() 

四、保存结果

爬虫入门经典(十三) | 一文教你简单爬取腾讯招聘
爬虫入门经典(十三) | 一文教你简单爬取腾讯招聘

美好的日子总是短暂的,虽然还想继续与大家畅谈,但是本篇博文到此已经结束了,如果还嫌不够过瘾,不用担心,我们下篇见!


爬虫入门经典(十三) | 一文教你简单爬取腾讯招聘

  好书不厌读百回,熟读课思子自知。而我想要成为全场最靓的仔,就必须坚持通过学习来获取更多知识,用知识改变命运,用博客见证成长,用行动证明我在努力。
  如果我的博客对你有帮助、如果你喜欢我的博客内容,请“点赞” “评论”“收藏”一键三连哦!听说点赞的人运气不会太差,每一天都会元气满满呦!如果实在要白嫖的话,那祝你开心每一天,欢迎常来我博客看看。
  码字不易,大家的支持就是我坚持下去的动力。点赞后不要忘了关注我哦!

爬虫入门经典(十三) | 一文教你简单爬取腾讯招聘
爬虫入门经典(十三) | 一文教你简单爬取腾讯招聘

本文转自 https://buwenbuhuo.blog.csdn.net/article/details/109351951,如有侵权,请联系删除。

收藏
评论区

相关推荐

一个爬虫的故事:这是人干的事儿?
本文转载自 轩辕之风的文章,链接 https://mp.weixin.qq.com/s/YygbUWpa2mbPZPuPNhdt2w 爬虫原理 我是一个爬虫,每天穿行于互联网之上,爬取我需要的一切。 image.png(https://imghelloworld.osscnbeijing.aliyuncs.com/imgs/656d
爬虫入门经典(九) | 简单一文教你如何爬取扇贝单词
大家好,我是不温卜火,是一名计算机学院大数据专业大三的学生,昵称来源于成语—不温不火,本意是希望自己性情温和。作为一名互联网行业的小白,博主写博客一方面是为了记录自己的学习过程,另一方面是总结自己所犯的错误希望能够帮助到很多和自己一样处于起步阶段的萌新。但由于水平有限,博客中难免会有一些错误出现,有纰漏之处恳请各位大佬不吝赐教!暂时只在csdn这一个平台进行
爬虫入门经典(十一) | 一文带你爬取传统古诗词(超级简单!)
大家好,我是不温卜火,是一名计算机学院大数据专业大三的学生,昵称来源于成语—不温不火,本意是希望自己性情温和。作为一名互联网行业的小白,博主写博客一方面是为了记录自己的学习过程,另一方面是总结自己所犯的错误希望能够帮助到很多和自己一样处于起步阶段的萌新。但由于水平有限,博客中难免会有一些错误出现,有纰漏之处恳请各位大佬不吝赐教!暂时只在csdn这一个平台进行
爬虫入门经典(二十一) | 破解CSS加密之爬取大众点评
大家好,我是不温卜火,是一名计算机学院大数据专业大三的学生,昵称来源于成语—不温不火,本意是希望自己性情温和。作为一名互联网行业的小白,博主写博客一方面是为了记录自己的学习过程,另一方面是总结自己所犯的错误希望能够帮助到很多和自己一样处于起步阶段的萌新。但由于水平有限,博客中难免会有一些错误出现,有纰漏之处恳请各位大佬不吝赐教!暂时只在csdn这一个平台进行
python算法
640?wx_fmtjpeg(https://imghelloworld.osscnbeijing.aliyuncs.com/c8238ed70f9664b61ce91f80786ca26f.png) 来源 | CSDN(ID:CSDNnews ) 本文是一些机器人算法(特别是自动导航算法)的Python代码合集。 其主要特点有以下
被“词云”包围的冰冰会更好看吗?安排
(https://imghelloworld.osscnbeijing.aliyuncs.com/b299933deefc692934e8cc6141ab3894.png) 大家好,我是小五🐶 昨天「凹凸数据」发了一篇张同学投稿的文章《用Python爬取王冰冰vlog弹幕并制作词云(https://mp.weixin.qq.com/
商业数据分析从入门到入职(9)Python网络数据获取
@toc 前言本文主要讲Python最常见的应用之一——网络数据获取,即爬虫:先介绍了网页和网络的基础知识,为从网页中获取数据打好基础;接下来以两个案例介绍从网络中获取数据和处理数据的不同方式,以进一步认识Python爬虫和数据处理。 一、网络和网页基础知识 1.数据来源数据源有很多,可以从数据库中获取,可以从文件中获取,也可以从
Python网络爬虫与信息提取
title: Python网络爬虫与信息提取date: 20201210 01:00:23tags: Pythoncategories: 学习笔记 写在前面 不知道写啥其实说实话[TOC] 网络爬虫之规则 安装requests库cmd 命令行打开输入pip3 install requests,等待即可简单测试,爬一下bkjwpythonimport requ
《Python3网络爬虫开发实战》
提取码:1028内容简介 · · · · · ·本书介绍了如何利用Python 3开发网络爬虫,书中首先介绍了环境配置和基础知识,然后讨论了urllib、requests、正则表达式、Beautiful Soup、XPath、pyquery、数据存储、Ajax数据爬取等内容,接着通过多个案例介绍了不同场景下如何实现数据爬取,后介绍了pyspider框架、S
创建免费ip代理池
     反爬技术越来越成熟,为了爬取目标数据,必须对爬虫的请求进行伪装,骗过目标系统,目标系统通过判断请求的访问频次或请求参数将疑似爬虫的ip进行封禁,要求进行安全验证,通过python的第三方库faker可以随机生成header伪装请求头,并且减缓爬虫的爬取速度,能很好的避过多数目标系统的反扒机制,但对一些安全等级
3000字 “婴儿级” 爬虫图文教学 | 手把手教你用Python爬取 “实习网”!
1\. 为"你"而写 这篇文章,是专门为那些 "刚学习" Python爬虫的朋友,而专门准备的文章。希望你看过这篇文章后,能够清晰的知道整个 "爬虫流程"。从而能够 "独立自主" 的去完成,某个简单网站的数据爬取。好了,咱们就开始整个 “爬虫教学” 之旅吧!2\. 页面分析 ① 你要爬取的网站是什么?首先,我们应该清楚你要爬去的网站是什么?由于这里我们想要
爬取软件工程师相关信息
爬取有关软件工作的信息 import reimport requestsfrom pymysql import connectfrom bs4 import BeautifulSoup 定义数据库的连接函数conn connect(user"root", password"root", host"localhost", database"python",
手把手教你使用XPath爬取免费代理IP
大家好,我是霖hero。前言 可能有人说,初学者Python爬虫爬数据太难啦,构造正则表达式的时候,太烦琐了,眼睛都看花了,而且前一秒还可以愉快地爬取,下一秒IP就被封了,这还爬个屁啊,不爬了。哎,不要着急,这篇文章我们教你如何使用XPath来爬取快代理中的免费代理IP,告别眼花,告别IP被封的烦恼。XPath首先我们来简单了解一下XPath,想要了解更多
实战|手把手教你用Python爬取存储数据,还能自动在Excel中可视化!
大家好,在之前我们讲过如何用Python构建一个带有GUI的爬虫小程序,很多本文将迎合热点,延续上次的NBA爬虫GUI,探讨如何爬取虎扑NBA官网数据。 并且将数据写入Excel中同时自动生成折线图,主要有以下几个步骤。本文将分为以下两个部分进行讲解 在虎扑NBA官网球员页面中进行爬虫,获取球员数据。 清洗整理爬取的球员数据,对其进行可视化。
手把手教你用Pycharm连接远程Python环境
前言本次咱们来操作一下如何在Pycharm上,使用远程服务器上的Python环境。 为什么这样做?这个要从我的一次经历说起,有一次我帮朋友爬取一些东西,由于类别不同,分了几次爬取,这一次我写好规则之后,依然正常爬取,由于我本人比较善良,加上数据量目测并不是太多,并没有使用代理ip,并且将scpay的速度控制的比较慢,一般爬取时,一般也就几分钟而已,泡一杯咖