大家好,我是霖hero

相信很多人都希望进腾讯这种大厂工作吧,人工高福利好,那么腾讯公司现在在招哪些职位,职位要求是什么呢,今天我们通过Scrapy框架来爬取腾讯招聘网,一探究竟!!!

爬前分析

爬取前我们来简单分析一下腾讯的技术岗招聘网页,进入网站并打开开发者工具,如下图所示:

通过上图可以知道,职位的数据存放在<div class="recruit-wrap recruit-margin"标签中,那么我们打开网页源代码看看,数据是否存放在网页源代码里面,如下图所示:

发现数据没有存放在源代码里面,由此可以推断数据是通过JavaScript渲染出来,那么我们查看Ajax请求,看看Ajax请求中有没有存放职位信息的数据,如下图所示:

既然有Ajax请求中存放着职位数据,那么我们可以通过Ajax请求来获取,先来看看该请求的URL链接是怎样的:

https://careers.tencent.com/tencentcareer/api/post/Query?timestamp=1629464904109&countryId=&cityId=&bgIds=&productId=&categoryId=40001001,40001002,40001003,40001004,40001005,40001006&parentCategoryId=&attrId=&keyword=&pageIndex=2&pageSize=10&language=zh-cn&area=cn

发现该请求的URL那么长,那么我们尝试删减一下该URL的数据,如下所示:

#第一页
https://careers.tencent.com/tencentcareer/api/post/Query?categoryId=40001001,40001002,40001003,40001004,40001005,40001006&pageIndex=1&pageSize=10&language=zh-cn&area=cn
​
#第二页
https://careers.tencent.com/tencentcareer/api/post/Query?categoryId=40001001,40001002,40001003,40001004,40001005,40001006&pageIndex=2&pageSize=10&language=zh-cn&area=cn
​
#第三页
https://careers.tencent.com/tencentcareer/api/post/Query?categoryId=40001001,40001002,40001003,40001004,40001005,40001006&pageIndex=3&pageSize=10&language=zh-cn&area=cn

通过简单删减可以得出该URL可以为上面的URL,而且pageIndex的翻页的重要参数。

好了,数据的存储位置和URL已经知道了,接下来我们开始爬取数据。

实战演练

创建scrapy项目

首先要创建一个scrapy项目,创建方式很简单,只要在执行以下命令即可:

scrapy startproject Tencent

执行命令后,pycharm的项目目录下会多了很多文件,如下图所示:

创建spider爬虫

创建spider爬虫的方式也很简单,只要执行如下命令即可:

scrapy genspider 爬取名 网站域名
scrapy genspider tencent careers.tencent.com

执行后,在spiders文件夹中会多了一个tencent.py文件,该文件就是刚才创建的spider爬虫,其文件内容下所示:

import scrapy
​
class Tencent1Spider(scrapy.Spider):name = 'tencent'allowed_domains = ['careers.tencent.com']start_urls = ['http://careers.tencent.com/']
​def parse(self, response):pass

其中

  • name是我们的爬虫名;

  • allowed_domains是域名,也就是爬虫爬取的范围;

  • start_urls是爬虫最开始爬取的URL链接;

  • parse()是用来解析响应、提取数据。

注意:parse()不能修改名字。

定义字段

在编写代码提取数据前,我们先来在items.py定义爬取的字段,字段类型为scrapy.Field,代码如下所示:

import scrapy
​
class TencentItem(scrapy.Item):# define the fields for your item here like:RecruitPostName = scrapy.Field()    #职位名LocationName = scrapy.Field()       #地址Responsibility = scrapy.Field()     #工作要求

提取数据

定义好字段后,接下来开始在tencent.py中编写代码来提取数据,具体代码如下所示:

import scrapy
from Tencent.items import TencentItem
class TencentSpider(scrapy.Spider):name = 'tencent'allowed_domains = ['careers.tencent.com']start_urls = ['https://careers.tencent.com/tencentcareer/api/post/Query?categoryId=40001001,40001002,40001003,40001004,40001005,40001006&pageIndex=1&pageSize=10&language=zh-cn&area=cn']
​def parse(self, response):json=response.json()datas = json.get('Data').get('Posts')for data in datas:item=TencentItem()item['RecruitPostName']=data.get('RecruitPostName'),item['LocationName']=data.get('LocationName'),item['Responsibility']=data.get('Responsibility').replace('\n','')yield item

首先我们导入items.py文件中的TencentItem,再修改start_urls的URL链接,定义一个json变量来接收网页响应的json()数据,通过for循环把每条职位信息循环遍历并提取我们想要的数据并放在item字典里面,其中item=TencentItem()相当于创建一个空字典item={},

翻页操作

首页我们已经成功获取到了,接下来要进行翻页操作,具体代码如下所示:

for i in range(2,4):next_url=f'https://careers.tencent.com/tencentcareer/api/post/Query?categoryId=40001001,40001002,40001003,40001004,40001005,40001006&pageIndex={i}&pageSize=10&language=zh-cn&area=cn'yield scrapy.Request(next_url,callback=self.parse)

首先我们创建一个for循环来进行翻页,调用yield生成器来返回数据给引擎,并调用scrapy.Request()方法,该方法能构建一个requests,同时指定提取数据的callback函数。

settings.py配置

在启动爬取前,我们先要在settings.py文件中编写一些代码,具体代码如下所示:

LOG_LEVEL="WARNING"
ITEM_PIPELINES = {         'Tencent.pipelines.TencentPipeline': 300,
}
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'   

其中:

  • LOG_LEVEL的作用的屏蔽log日志的输出;

  • ITEM_PIPELINES的作用是开启引擎;

保存数据

当我们要把数据保存成文件的时候,不需要任何额外的代码,只要执行如下代码即可

scrapy crawl 爬虫名 -o xxx.json      #保存为JSON文件
scrapy crawl 爬虫名 -o xxx.csv      #保存为csv文件
scrapy crawl 爬虫名 -o xxx.xml      #保存为xml文件

当要把数据保存在数据库里面或者txt文件时,则需要在pipelines.py文件中编写代码。

好了,全部代码已经编写好了,现在执行以下命令来启动爬虫

scrapy crawl tencent -o tencent.csv

结果展示

好了,爬取腾讯招聘就讲到这里了,感谢观看!!!

Python爬虫——Scrapy框架爬取腾讯招聘相关推荐

  1. Python爬虫 scrapy框架 爬取智联招聘,并把数据存入数据库,存为json格式的数据

    First:创建项目:执行下面三句命令: 1. scrapy startproject zhilianzhaopin2. cd zhilianzhaopin3.scrapy genspider zhi ...

  2. Python爬虫 scrapy框架爬取某招聘网存入mongodb解析

    这篇文章主要介绍了Python爬虫 scrapy框架爬取某招聘网存入mongodb解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 创建项目 sc ...

  3. python爬虫scrapy框架爬取网页数据_Scrapy-Python

    scrapy Scrapy:Python的爬虫框架 实例Demo 抓取:汽车之家.瓜子.链家 等数据信息 版本+环境库 Python2.7 + Scrapy1.12 初窥Scrapy Scrapy是一 ...

  4. python爬虫库scrapy_使用Python爬虫Scrapy框架爬取数据

    时隔数月,国庆期间想做个假期旅游的分析展示. 1.通过Python爬取旅游网站上数据,并存储到数据库 2.通过Echart/FineReport/Superset等数据分析工具对数据展示 环境: Wi ...

  5. python爬虫scrapy框架爬取糗妹妹段子首页

    声明:本文仅为学习爬虫,请勿商业和恶意攻击网站,本文所有解释权归作者. 本文分别用两种方法把获取的段子信息存储到了本地,分别是txt文件和json文件, txt文件比较简单,生成字典后用命令直接执行即 ...

  6. 利用python的scrapy框架爬取google搜索结果页面内容

    scrapy google search 实验目的 爬虫实习的项目1,利用python的scrapy框架爬取google搜索结果页面内容. https://github.com/1012598167/ ...

  7. 利用Scrapy框架爬取前途无忧招聘信息

    利用Scrapy框架爬取前途无忧招聘信息 关于安装和命令使用可参考:https://docs.scrapy.org/en/1.7/intro/install.html 先创建项目和爬虫文件 分析网站 ...

  8. Python的Scrapy框架爬取诗词网站爱情诗送给女友

    文章目录 前言 效果展示: 一.安装scrapy库 二.创建scrapy项目 三.新建爬虫文件scmg_spider.py 四.配置settings.py文件 五.定义数据容器,修改item.py文件 ...

  9. python爬虫——scrapy+selenium爬取新浪微博及评论

    本文主要对爬取过程中所用到的知识做简单总结,最后有项目链接. 一.项目简介 本项目利用python的scrapy框架+selenium模拟登陆微博来爬取带有关键字的微博及微博下面的评论(1 .2级评论 ...

  10. python爬虫实例之爬取智联招聘数据

    这是作者的处女作,轻点喷.... 实习在公司时领导要求学习python,python的爬虫作为入门来说是十分友好的,话不多说,开始进入正题. 主要是爬去智联的岗位信息进行对比分析出java和pytho ...

最新文章

  1. 1.6 课程资源-深度学习-Stanford吴恩达教授
  2. 数据结构学习笔记(一):链表(linked list)
  3. 单片机定时器实验两位倒计时秒表_单片机学习「1」 初始51单片机
  4. 简单的Delegate(委托)例子
  5. Linux命令笔记(一)
  6. mysql innodb排他锁_mysql 中innoDB引擎的事务喝共享锁喝排他锁
  7. 怎看沃科斯扫地机器人型号_科沃斯型号区别是什么?
  8. 使用EF框架的增删改查和分页的公共类
  9. amd显卡用黑苹果输出黑屏_教大家黑苹果英伟达免驱显卡黑屏怎么解决的方法
  10. matlab2013语言设置,科学网—macOS MATLAB 更改界面语言设置——中文改为英文 - 李航的博文...
  11. SpringBoot(十六)_springboot整合JasperReport6.6.0
  12. 单片机蜂鸣器的控制程序与驱动电路图
  13. Excel表Ctrl+v和Ctrl shift+v有什么区别_朴素的办公神器——excel
  14. 服务器已联网 不能远程桌面,几种常见的Windows 服务器无法联网/无法连接远程桌面等故障解决方案...
  15. 如何手动制作透明的图片相框 可以供android使用
  16. sql的简单的增删改查
  17. Qwt Plot Magnifier 缩放以鼠标为中心
  18. hotspot源码角度看OOP之类属性的底层实现(一)
  19. 我在北京工作,但是户口在重庆。 今天妈妈去办理她的医保,办理的人户口本上的人都要办医保卡,我在北京已经有了医保了。重庆那边就需要我出示这边单位的证明,请问我应该如何去开呢?
  20. DAT的算法原理及实现

热门文章

  1. hdfs 指令_HDFS之一:hdfs命令行操作
  2. c# asp.net web程序获取当前文件路径
  3. Alarm Clock C/C++ Version
  4. unity5 rendersetting选项
  5. 【文献阅读01】Eco-Vehicular Edge Networks for Connected Transportation: A Distributed Multi-Agent Reinfor
  6. 亮度均匀性 matlab,亮度均匀性(Uniformity)
  7. 客户关系管理 期末复习
  8. 抖音APP终极瘦身方案
  9. 【有利可图网】PS实战教程26:1分钟搞定抠头发丝,超简单!
  10. 网页截图及TDK抓取