新手学习爬虫,作为练习项目,使用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框架)相关推荐

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

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

  2. python cookie池_Python爬虫scrapy框架Cookie池(微博Cookie池)的使用

    下载代码Cookie池(这里主要是微博登录,也可以自己配置置其他的站点网址) 下载代码GitHub:https://github.com/Python3WebSpider/CookiesPool 下载 ...

  3. python scrapy爬虫视频_python爬虫scrapy框架的梨视频案例解析

    之前我们使用lxml对梨视频网站中的视频进行了下载 下面我用scrapy框架对梨视频网站中的视频标题和视频页中对视频的描述进行爬取 分析:我们要爬取的内容并不在同一个页面,视频描述内容需要我们点开视频 ...

  4. python爬虫--Scrapy框架--Scrapy+selenium实现动态爬取

    python爬虫–Scrapy框架–Scrapy+selenium实现动态爬取 前言 本文基于数据分析竞赛爬虫阶段,对使用scrapy + selenium进行政策文本爬虫进行记录.用于个人爬虫学习记 ...

  5. Python爬虫—Scrapy框架—Win10下载安装

    Python爬虫-Scrapy框架-Win10下载安装 1. 下载wheel 2.下载twisted 3. 下载pywin32 4. 下载安装Scrapy 5. 创建一个scrapy项目 6. fir ...

  6. Python爬虫-Scrapy框架(四)- 内置爬虫文件 - 4.2 初探Crawl Spider

    Python爬虫-Scrapy框架(四)- 内置爬虫文件 - 4.2 初探Crawl Spider 写在前面 初探Crawl Spider 创建Crawl Spider项目 对比Basic与Crawl ...

  7. python 爬虫框架_Python网络爬虫-scrapy框架的使用

    1. Scrapy 1.1 Scrapy框架的安装 Scrapy是一个十分强大的爬虫框架,依赖的库比较多,至少需要依赖的库有Twisted .lxml和pyOpenSSL.在不同的平台环境下,它所依赖 ...

  8. dataObject可以去重吗java_python爬虫scrapy框架之增量式爬虫的示例代码

    scrapy框架之增量式爬虫 一 .增量式爬虫 什么时候使用增量式爬虫: 增量式爬虫:需求 当我们浏览一些网站会发现,某些网站定时的会在原有的基础上更新一些新的数据.如一些电影网站会实时更新最近热门的 ...

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

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

  10. scrapy获取a标签的连接_Python爬虫 scrapy框架初探及实战!

    Scrapy框架安装 操作环境介绍 操作系统:Ubuntu19.10 Python版本:Python3.7.4 编译器:pycharm社区版 安装scrapy框架(linux系统下) 安装scrapy ...

最新文章

  1. 14_传智播客iOS视频教程_instancetype
  2. jsp的<a>标签中怎么传递参数
  3. 2.10 stack
  4. vue mint-ui 弹出框
  5. 【转】Android android listview的HeadView左右切换图片(仿新浪,网易,百度等切换图片)...
  6. java 结果用长整数型表示_java 编程 输入正整数n,计算n!结果用长整型数表示
  7. Centos7.6安装Oracle11gR2
  8. 观看杨老师(杨旭)Asp.Net Core MVC入门教程记录
  9. [转]:vue-cli3.0配置详解
  10. php 构造函数参数传值,php 构造函数参数
  11. 计算机办公自动化知识试题及答案,2015年计算机办公自动化考试试题及答案
  12. 关于sql注入漏洞的挖掘及渗透工具简介
  13. u盘启动进入grub linux,利用grub4dos的u盘启动盘拯救linux系统
  14. EDM广告邮件代码内容编写参考建议
  15. python使用pywinauto驱动微信客户端实现公众号爬虫
  16. 图解 魔方快速还原 7步法
  17. 哈哈,原来这叫做“松鼠症”……并谈谈我建议的学习方法
  18. Windows双开或者多开微信的简单做法
  19. 月薪不过万郑州程序员的真实生活
  20. Markdown语法笔记

热门文章

  1. 炎炎夏日送清凉,转发集赞得T恤,51CTO定制T恤免费送了
  2. python输入一个人的名字_把一个人的名字分成名字和姓
  3. 机房动力环境监测解决方案
  4. 编写测试用例方法之错误推测法
  5. 【U8+】用友U8+16.1不自动删除历史的自动备份文件
  6. 大数据教程(10.5)运营商流量日志解析增强
  7. 计算机cpu天体图,台式电脑CPU天梯图2019年1月版更新 多款新九代酷睿处理器了解下...
  8. Solr Facet
  9. 三星android5 root包,三星N9200刷国行系统(含五件套root权限recovery SuperSU)
  10. Android N 程序适配要点