【Scrapy】CrawlSpider 单页面Ajax爬取

项目目标

爬取拉勾网职位列表基本信息+职位描述

项目思考

拉勾网的招聘岗位列表,这是Ajax异步加载的。

我想把岗位列表所显示的信息爬取下来,同时还需要岗位的工作详情。

爬取流程就是一开始就不断获取职位列表的json,然后从json中提取对应的职位详情页,再进去爬取其职位描述。

使用Scrapy的scrapy.Spider基础爬虫模板很简单就可以实现,直接重载编写parse方法,再加上个回调方法就可以。

但如何使用CrawlSpider做到类似的功能?

对于获取json的网址,rules规则没什么用,而CrawlSpider中的parse是不能被重载的。

  1. 第一步,重写start_request():

    crawlspider继承基类是spider,所以它的开始入口也是start_request(),然后默认回调parse。注意回调parse这个不能改。

  2. 第二步,重写parse_start_url()

    start_request()->parse()->_parse_response()->parse_start_url()

    如果设置了callback就会调用parse_start_url()方法,rules中的回调。

    因为rules在本次项目中没有作用,所以我们需要重载parse_start_url()作为我们的回调方法。

    在parse_start_url()中,需要获取职位的详情页,发起request,设置回调方法。
    不断发起下一页的职位列表请求。

  3. 第三步,编写解析职位描述的detail_parse()

    注意的时,这里最后在parse_start_url()中使用response.meta传递item到detail_parse()来进行数据保存。

    因为如果在parse_start_url()就把职位列表的信息保存下来的话,因为Scrapy程序调度的关系,在插入数据库的时候,item中的数据不一定同步,插入数据库会报一些错。

  4. 注意request要带上有cookie的header,不然会被重定向到login页面

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值