scrapy爬取腾讯招聘数据
需求分析
爬取腾讯招聘–社会招聘–技术类的工作岗位,实现翻页的爬取
页面分析
复制任意职位名称,点右键,查看网页源代码,在里面并未找到相关内容,说明页面不是静态加载出来的,是动态加载出来的。点击Network —> XHR,刷新页面,在左侧name下出现4个文件,依次点击查找数据接口,在Query开头的文件中Preview中可以看到需要的职位名称,因此这个文件下Headers里的url就是我们需要爬取的url。


当我们点击页面尾部下一页的时候,在name下面出另加载出来一个Query开头的文件,依次点开几页,我们可以从url中找到规律。
https://careers.tencent.com/tencentcareer/api/post/Query?timestamp=1632126706522&countryId=&cityId=&bgIds=&productId=&categoryId=&parentCategoryId=40001&attrId=&keyword=&pageIndex=1&pageSize=10&language=zh-cn&area=cn 第一页
https://careers.tencent.com/tencentcareer/api/post/Query?timestamp=1632127143042&countryId=&cityId=&bgIds=&productId=&categoryId=40001001,40001002,40001003,40001004,40001005,40001006&parentCategoryId=&attrId=&keyword=&pageIndex=2&pageSize=10&language=zh-cn&area=cn 第二页
https://careers.tencent.com/tencentcareer/api/post/Query?timestamp=1632127244688&countryId=&cityId=&bgIds=&productId=&categoryId=40001001,40001002,40001003,40001004,40001005,40001006&parentCategoryId=&attrId=&keyword=&pageIndex=3&pageSize=10&language=zh-cn&area=cn 第三页
timestamp是时间戳,是访问页面的时间
按照第三页的url,把pageIndex改为1,同样能访问到第一页,说明 做翻页处理时候pageIndex=n,代表的是第n页。
复制任一页的网页打开后

我们可以发现要爬取的数据是以字典的形式存放在网页代码中,访问的url就是要爬取的url。
代码实现
实现对职位、地区、工作职责、详情页url的爬取
创建scrapy文件,这里是在cmd下创建的,我的爬虫文件在D盘,也可以在pycharm中的Terminal中直接创建。

start.py
from scrapy import cmdline
# cmdline.execute(['scrapy', 'crawl', 'TXhr']) # 方法一
cmdline.execute('scrapy crawl TXhr'.split(" ")) # 方法二
items.py
import scrapy
class TencentItem(scrapy.Item):
# define the fields for your item here like:
# name = scrapy.Field()
RecruitPostName = scrapy.Field()
LocationName = scrapy.Field()
Responsibility = scrapy.Field()
PostURL = scrapy.Field()
LOG_LEVEL = 'WARNING'
BOT_NAME = 'tencent'
SPIDER_MODULES = ['tencent.spiders']
NEWSPIDER_MODULE = 'tencent.spiders'
ROBOTSTXT_OBEY = False
DEFAULT_REQUEST_HEADERS = {
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Language':
最低0.47元/天 解锁文章
scrapy案例--爬取腾讯招聘数据&spm=1001.2101.3001.5002&articleId=120392605&d=1&t=3&u=2ffeda499d4c4d75b9670575197c20c9)
549

被折叠的 条评论
为什么被折叠?



