腾讯招聘爬虫(Scrapy框架)
新手学习爬虫,作为练习项目,使用Scrapy框架实现腾讯招聘爬虫并保存到MongoDB数据库
附腾讯招聘链接:搜索 | 腾讯招聘
查看网页源代码后发现其中没有数据,因此转向后端抓包查找数据源。
找到接口后进行解析,不难发现timestamp后的一串数字就是当前的时间戳,因此爬虫运行时若要爬取实时的招聘信息,就要动态获取当前的时间戳。
之后开始创建项目
创建项目命令:scrapy startproject tencent
创建爬虫:scrapy genspider hr tencent.com
item:
import scrapy
from scrapy import Fieldclass TencentItem(scrapy.Item):title=Field() #职位country=Field() #城市type=Field() #工作类型text=Field() #岗位介绍time=Field() #发布时间url=Field() #职位详情链接collection='hr'
爬虫体:
import scrapy
import timeclass HrSpider(scrapy.Spider):name = 'hr'allowed_domains = ['tencent.com']start_urls = ['https://careers.tencent.com/tencentcareer/api/post/Query?timestamp={}''&countryId=&cityId=&bgIds=&productId=&categoryId=&parentCategoryId=&attrId=&keyword=&pageIndex=1&pageSize=10&language=zh-cn&area=cn'.format(int(time.time()*1000))]def parse(self, response):# print(response.json()['Data']['Posts'][0])content=response.json()['Data']['Posts']for tr in content:item={}item['title']=tr['RecruitPostName']item['country']=tr['CountryName']+' '+tr['LocationName']item['type']=tr['CategoryName']item['text']=tr['Responsibility']item['time']=tr['LastUpdateTime']item['url']='https://careers.tencent.com/jobdesc.html?postId='+tr['PostId']print(item)yield itemfor i in range(2,940):next_url='https://careers.tencent.com/tencentcareer/api/post/Query?timestamp={}' \'&countryId=&cityId=&bgIds=&productId=&categoryId=&parentCategoryId=&attrId=&keyword=&pageIndex={}&pageSize=10&language=zh-cn&area=cn'.format(int(time.time()*1000),i)yield scrapy.Request(url=next_url,callback=self.parse)
这里先获取数据,之后创建一个空字典item,对每个字段进行拆分,生成键值对进行保存,之后查找下一页的url地址,在翻页后观察url中改变的参数信息,除了时间戳之外还发现其中的pageIndex由1变成了2,由此可以判断根据这个参数进行翻页,之后使用一个for循环生成url地址(这里爬取940页的招聘信息)
最后生成请求,将生成的url地址交给回调函数parse进行爬取,直到结束
数据清洗和数据库保存:
from pymongo import MongoClientclass MongoPipeline(object):def __init__(self,mongo_uri,mongo_db):self.mongo_uri=mongo_uriself.mongo_db=mongo_db@classmethoddef from_crawler(cls,crawler):return cls(mongo_uri=crawler.settings.get('MONGO_URI'),mongo_db=crawler.settings.get('MONGO_DB'))def open_spider(self,spider):self.client=MongoClient(self.mongo_uri)self.db=self.client[self.mongo_db]def process_item(self,item,spider):name=item.__class__.__name__item['text']=item['text'].strip() #删除字符串末端空格self.db[name].insert(dict(item)) #插入数据库return itemdef close_spider(self,spider):self.client.close()
最后对爬取的信息进行清洗并保存到数据库
settings信息:
BOT_NAME = 'tencent'SPIDER_MODULES = ['tencent.spiders']
NEWSPIDER_MODULE = 'tencent.spiders'MONGO_URL='localhost'
MONGO_DB='tencent'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'ROBOTSTXT_OBEY = False
LOG_LEVEL='WARNING'ITEM_PIPELINES = {'tencent.pipelines.MongoPipeline': 300,
}
运行结果:
作为爬虫初学者第一次尝试练习,还有很多不足,欢迎指点。
腾讯招聘爬虫(Scrapy框架)相关推荐
- Python爬虫 scrapy框架爬取某招聘网存入mongodb解析
这篇文章主要介绍了Python爬虫 scrapy框架爬取某招聘网存入mongodb解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 创建项目 sc ...
- python cookie池_Python爬虫scrapy框架Cookie池(微博Cookie池)的使用
下载代码Cookie池(这里主要是微博登录,也可以自己配置置其他的站点网址) 下载代码GitHub:https://github.com/Python3WebSpider/CookiesPool 下载 ...
- python scrapy爬虫视频_python爬虫scrapy框架的梨视频案例解析
之前我们使用lxml对梨视频网站中的视频进行了下载 下面我用scrapy框架对梨视频网站中的视频标题和视频页中对视频的描述进行爬取 分析:我们要爬取的内容并不在同一个页面,视频描述内容需要我们点开视频 ...
- python爬虫--Scrapy框架--Scrapy+selenium实现动态爬取
python爬虫–Scrapy框架–Scrapy+selenium实现动态爬取 前言 本文基于数据分析竞赛爬虫阶段,对使用scrapy + selenium进行政策文本爬虫进行记录.用于个人爬虫学习记 ...
- Python爬虫—Scrapy框架—Win10下载安装
Python爬虫-Scrapy框架-Win10下载安装 1. 下载wheel 2.下载twisted 3. 下载pywin32 4. 下载安装Scrapy 5. 创建一个scrapy项目 6. fir ...
- Python爬虫-Scrapy框架(四)- 内置爬虫文件 - 4.2 初探Crawl Spider
Python爬虫-Scrapy框架(四)- 内置爬虫文件 - 4.2 初探Crawl Spider 写在前面 初探Crawl Spider 创建Crawl Spider项目 对比Basic与Crawl ...
- python 爬虫框架_Python网络爬虫-scrapy框架的使用
1. Scrapy 1.1 Scrapy框架的安装 Scrapy是一个十分强大的爬虫框架,依赖的库比较多,至少需要依赖的库有Twisted .lxml和pyOpenSSL.在不同的平台环境下,它所依赖 ...
- dataObject可以去重吗java_python爬虫scrapy框架之增量式爬虫的示例代码
scrapy框架之增量式爬虫 一 .增量式爬虫 什么时候使用增量式爬虫: 增量式爬虫:需求 当我们浏览一些网站会发现,某些网站定时的会在原有的基础上更新一些新的数据.如一些电影网站会实时更新最近热门的 ...
- python爬虫scrapy框架爬取网页数据_Scrapy-Python
scrapy Scrapy:Python的爬虫框架 实例Demo 抓取:汽车之家.瓜子.链家 等数据信息 版本+环境库 Python2.7 + Scrapy1.12 初窥Scrapy Scrapy是一 ...
- scrapy获取a标签的连接_Python爬虫 scrapy框架初探及实战!
Scrapy框架安装 操作环境介绍 操作系统:Ubuntu19.10 Python版本:Python3.7.4 编译器:pycharm社区版 安装scrapy框架(linux系统下) 安装scrapy ...
最新文章
- 14_传智播客iOS视频教程_instancetype
- jsp的<a>标签中怎么传递参数
- 2.10 stack
- vue mint-ui 弹出框
- 【转】Android android listview的HeadView左右切换图片(仿新浪,网易,百度等切换图片)...
- java 结果用长整数型表示_java 编程 输入正整数n,计算n!结果用长整型数表示
- Centos7.6安装Oracle11gR2
- 观看杨老师(杨旭)Asp.Net Core MVC入门教程记录
- [转]:vue-cli3.0配置详解
- php 构造函数参数传值,php 构造函数参数
- 计算机办公自动化知识试题及答案,2015年计算机办公自动化考试试题及答案
- 关于sql注入漏洞的挖掘及渗透工具简介
- u盘启动进入grub linux,利用grub4dos的u盘启动盘拯救linux系统
- EDM广告邮件代码内容编写参考建议
- python使用pywinauto驱动微信客户端实现公众号爬虫
- 图解 魔方快速还原 7步法
- 哈哈,原来这叫做“松鼠症”……并谈谈我建议的学习方法
- Windows双开或者多开微信的简单做法
- 月薪不过万郑州程序员的真实生活
- Markdown语法笔记
热门文章
- 炎炎夏日送清凉,转发集赞得T恤,51CTO定制T恤免费送了
- python输入一个人的名字_把一个人的名字分成名字和姓
- 机房动力环境监测解决方案
- 编写测试用例方法之错误推测法
- 【U8+】用友U8+16.1不自动删除历史的自动备份文件
- 大数据教程(10.5)运营商流量日志解析增强
- 计算机cpu天体图,台式电脑CPU天梯图2019年1月版更新 多款新九代酷睿处理器了解下...
- Solr Facet
- 三星android5 root包,三星N9200刷国行系统(含五件套root权限recovery SuperSU)
- Android N 程序适配要点