爬取腾讯招聘岗位薪资,分析互联网岗位需求
此次数据来源于腾讯招聘,仅作参考使用,如有侵权,请联系我740449043@qq.com,会立即删除
此次使用scrapy框架完成,首先,通过浏览器进入腾讯招聘的页面,因为需求不一样,所以抓包抓到的url也不一样,在这里,我是将国家定位于中国,城市定位为深圳,爬取腾讯2019年的招聘信息,数据清洗则主要使用了正则表达式,将清洗后的数据写入MySQL保存。
首先在items.py定义一下所需要爬取的数据名,简单来说就是定义变量
# Define here the models for your scraped items
#
# See documentation in:
# https://doc.scrapy.org/en/latest/topics/items.htmlimport scrapy#定义目标数据的字段
class TCItem(scrapy.Item):# define the fields for your item here like:Job = scrapy.Field() #职位CountryName = scrapy.Field() #所在国家LocationName = scrapy.Field() #所在城市BGName = scrapy.Field() #招聘部门CategoryName = scrapy.Field() #所属部门Responsibility = scrapy.Field() #要求LastUpdateTime = scrapy.Field() #最后更新时间
接下来我们需要编写爬虫部分,一个项目可以有多个爬虫,在这里面,先拿到每页的每一个岗位的URLl,通过正则匹配到需要抓取的信息,例如工作地点,任职要求,每拿到一条数据就返回一次,以提高执行效率,提取页码,然后通过拼接构造每一页的URL,翻到末页就结束递归。
# -*- coding: utf-8 -*-
import scrapy
import re#导入自定义的包
from MyScrapy.items import MyscrapyItemclass TengxunzpspiderSpider(scrapy.Spider):name = 'TengXunSpider' # 识别名称allowed_domains = ['careers.tencent.com/'] # 爬取范围url_1 = r'https://careers.tencent.com/tencentcareer/api/post/Query?timestamp=1559004660890&countryId=&cityId=1&bgIds=&productId=&categoryId=&parentCategoryId=&attrId=&keyword=&pageIndex='page = 1url_2 = '&pageSize=10&language=zh-cn&area=cn'start_urls = [url_1 + str(page) + url_2] # 起始urldef parse(self, response):data = response.body.decode('utf-8') # 获取响应内容Job = re.findall(r'"RecruitPostName":"(.*?)",', data) # 职位CountryName = re.findall(r'"CountryName":"(.*?)",', data) # 所在国家LocationName = re.findall(r'"LocationName":"(.*?)",', data) # 所在城市BGName = re.findall(r'"BGName":"(.*?)",', data) # 招聘部门CategoryName = re.findall(r'"CategoryName":"(.*?)",', data) # 所属部门LastUpdateTime = re.findall(r'"LastUpdateTime":"(.*?)",', data) # 最后更新时间Responsibility = re.findall(r'"Responsibility":"(.*?)",', data) # 要求header = {'Accept': 'text / html, application / xhtml + xml, application / xml;q = 0.9, * / *; q = 0.8''Accept-Encoding:gzip, deflate, br''Accept-Language: en-US, en; q=0.8, zh-Hans-CN; q=0.5, zh-Hans; q=0.3''Host: movie.douban.com''Referer: https://movie.douban.com/''User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36 Edge/18.17763'}for i in range(0, len(CountryName)):item = MyscrapyItem()item['Job'] = Job[i]item['CountryName'] = CountryName[i]item['LocationName'] = LocationName[i]item['BGName'] = BGName[i]item['LastUpdateTime'] = LastUpdateTime[i]item['Responsibility'] = Responsibility[i]item['CategoryName'] = CategoryName[i]yield item# 实现自动翻页# 1.获取当前url,提取页码信息beforurl = response.urlpat_1 = r'pageIndex=(\d*)&'page = re.search(pat_1, beforurl).group(1)# 2.构造下一页的url,发送下一次请求self.page += 1if self.page < 266:# 得到下一次请求的pageIndex信息# 构造下一页的url#self.url = self.url_1 + str(self.page) + self.url_2# 发送下一次请求yield scrapy.Request(self.url_1 + str(self.page) + self.url_2, callback=self.parse,dont_filter=True,headers=header)
数据的抓取,清洗部分已经写好了,接下来,我们要做的就是保存到数据库,这需要在管道文件pipelines.py中编写代码,以保存到数据库中
# -*- coding: utf-8 -*-# Define your item pipelines here
#
# Don't forget to add your pipeline to the ITEM_PIPELINES setting
# See: https://doc.scrapy.org/en/latest/topics/item-pipeline.htmlimport pymysql#管道文件,负责item的后期处理或保存
class MyfirstscrapyPipeline(object):def __init__(self):#定义一些需要初始化的参数#连接数据库self.connect = pymysql.Connect(host='localhost',port=3306,user='*****',password='******',db='scrapyspider',charset='utf8')self.cursor = self.connect.cursor()#self.file = open('tengxun.csv','a+')#管道每次接收到item后执行的方法(必须实现)#return item 必须要有def process_item(self, item, spider):#往数据库写入数据'''self.cursor.execute('insert into tengxunzp_6_5(Job,CountryName,LocationName,BGName,CategoryName,LastUpdateTime) value (%s,%s,%s,%s,%s,%s)',(item['Job'],item['CountryName'],item['LocationName'],item['BGName'],item['CategoryName'],item['LastUpdateTime']#item['Responsibility']))'''self.connect.commit()#当爬取执行完毕时执行的方法def close_spider(self,spider):#关闭数据库self.cursor.close()self.connect.close()#self.file.close()
下面是写入到数据库的文件,仅2019年腾讯深圳招聘岗位数据如下
到这里,items.py里明确的定义要抓取的目标,爬虫部分执行并清洗数据,拿到了所需数据并返回给管道文件,管道文件写入到数据库并保存,在这里,由于前期定位较小,所以并没有使用代理IP,要没有使用自定义的IP代理池,有需求才有需要的功能,代码并不一定要很复杂,能很好的实现功能,才是代码执行的本质,废话就不多说,有时间得分析数据去了。
爬取腾讯招聘岗位薪资,分析互联网岗位需求相关推荐
- 从入门到入土:Python爬虫学习|实例练手|详细讲解|爬取腾讯招聘网|一步一步分析|异步加载|初级难度反扒处理|寻找消失的API来找工作吧
此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出.欢迎各位前来交流.(部分材料来源网络,若有侵权,立即删除) 本人博客所有文章纯属学习之用,不涉及商业利益.不合适引用,自当删除! 若 ...
- Python网络爬虫:爬取腾讯招聘网职位信息 并做成简单可视化图表
hello,大家好,我是wangzirui32,今天我们来学习如何爬取腾讯招聘网职位信息,并做成简单可视化图表,开始学习吧! 文章目录 1. 网页分析 2. 获取json数据 3. 转换为Excel ...
- 爬虫实战——爬取腾讯招聘的职位信息(2020年2月2日)
爬取腾讯招聘的职位信息 思路分析 特别说明 1.获取PostId列表 2.爬取详情页面 3.保存数据 完整代码 结果展示 总结分析 思路分析 特别说明 本文以Java工作岗位信息为例进行说明,如果想爬 ...
- python爬取2019年计算机就业_2019年最新Python爬取腾讯招聘网信息代码解析
原标题:2019年最新Python爬取腾讯招聘网信息代码解析 前言 初学Python的小伙们在入门的时候感觉这门语言有很大的难度,但是他的用处是非常广泛的,在这里将通过实例代码讲解如何通过Python ...
- 爬虫入门经典(十三) | 一文教你简单爬取腾讯招聘
大家好,我是不温卜火,是一名计算机学院大数据专业大三的学生,昵称来源于成语-不温不火,本意是希望自己性情温和.作为一名互联网行业的小白,博主写博客一方面是为了记录自己的学习过程,另一方面是总结自己 ...
- Python爬虫爬取智联招聘!谁说Python岗位少的?
运行平台: Windows Python版本: Python3.6 IDE: Sublime Text 其他工具: Chrome浏览器 0.写在前面的话 本文是基于基础版上做的修改,如 ...
- Scrapy框架学习笔记 - 爬取腾讯招聘网数据
文章目录 一.Scrapy框架概述 (一)网络爬虫 (二)Scrapy框架 (三)安装Scrapy框架 (四)Scrapy核心组件 (五)Scrapy工作流程 二. Scrapy案例演示 (一)爬取目 ...
- 腾讯python招聘_2019年最新Python爬取腾讯招聘网信息代码解析
前言 初学Python的小伙们在入门的时候感觉这门语言有很大的难度,但是他的用处是非常广泛的,在这里将通过实例代码讲解如何通过Python语言实现对于腾讯招聘网站信息的抓取废话不多说,各位小伙伴们一起 ...
- 利用Crawlspider爬取腾讯招聘数据(全站,深度)
需求: 使用crawlSpider(全站)进行数据爬取 - 首页: 岗位名称,岗位类别 - 详情页:岗位职责 - 持久化存储 代码: 爬虫文件: from scrapy.linkextractors ...
最新文章
- classes是什么意思怎么读_KY啥意思?托马仕空品教你怎么读空气
- Vue 学习 之 7.01 学习笔记
- 关于 iOS apps 的启动页设计,再唠叨几句
- opencv 和 parfor
- [深入学习C#]LINQ查询表达式详解(1)——基本语法、使用扩展方法和Lambda表达式简化LINQ查询
- mysql 动态hash_python动态渲染库_python 动态渲染 mysql 配置文件的示例
- tcp与udp的socket编程,udp代码实现客户端服务端,tcp代码实现客户端服务端(单线程、多线程、多进程分别实现),三次握手
- 日语学习 「バージョン」 version と 「リビジョン」 revision
- java多线程条件变量_30秒带你读懂Java并发包工具(JUC)之Condition(并发条件变量)...
- Java笔记(2)黑马刘意_Java入门_2019_idea版
- 3个极品在线PDF转换成WORD服务网站,比软件给力!
- 同花顺 行情服务器系统,[分享]完美运行同花顺,Linux下的股友有福了
- python实战项目分析2—物流
- 大学物理笔记——第二章质点动力学
- vue项目+高德地图
- html文本显示不完整,css 内容显示不全怎么办
- axios封装需要注意的增删改查传参易混淆点
- 高斯正反算—投影坐标转大地坐标、大地坐标转投影坐标(附有完整代码及测试结果)
- 对数据库中的数据(用户名/密码)加密解密
- python批量裁剪图片_python通过opencv实现批量剪切图片
热门文章
- CSS导航栏及下拉菜单
- java中引号嵌套_java和javascript双引号嵌套的问题
- 一千度近视眼学计算机,模拟从近视一千度度到远视1000度看到的效果
- MyBioSource 卵转铁蛋白 (LTF),ELISA 试剂盒研究
- 生物医学信号检测与处理实验5——2声表面波气体传感器+3电传感器+4吸湿膨胀引起的MEMS压力传感器漂移
- Linux下常用软件安装
- [软件工程基础]结对项目——地铁
- 【图像分割】基于GAC水平集方法实现图像分割matlab 源码
- Altium AD20过孔盖油,通过设计规则实现过孔盖油,简便实用不会造成遗漏出错
- 国科大学习资料--VLSI测试与可测试设计--2020期末考试试题