首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >爬虫进阶:Scrapy抓取boss直聘、拉勾心得经验

爬虫进阶:Scrapy抓取boss直聘、拉勾心得经验

作者头像
happyJared
发布2018-10-11 11:28:27
1.8K0
发布2018-10-11 11:28:27
举报
文章被收录于专栏:happyJaredhappyJared

关于使用Scrapy的体会,最明显的感受就是这种模板化、工程化的脚手架体系,可以说是拿来即可开箱便用,大多仅需按一定的规则套路配置,剩下的就是专注于编写跟爬虫业务有关的代码。绝大多数的反反爬虫策略,大多有以下几种:

  • 忽略robots.txt协议
  • 添加随机请求头,如cookie、user-agent等
  • sleep休眠
  • 控制并发请求数、设置页面下载延迟
  • 验证码识别(靠谱)
  • 使用ip代理池(最靠谱)

文章的出发点是share本人使用scrapy爬取Boss和拉勾两个招聘网的一些实操总结经验。两个网站的网页结构不尽相同,好在需要及提取出的最终数据基本保持了一致,出于两个网站不同的反爬策略和请求配置(settings.py),因此对应实际的情况是两个Scrapy项目。

友情提醒,这里不介绍scrapy示例及完整代码(Tip: 下方贴有完整代码链接)。如文章标题描述的那样,由于拉勾和Boss都有各自不同的反爬策略,多少也限制了一些爬虫学习者的热情,包括我自身在内,不过多番尝试之后还是有收获的,跑的是定时计划,目前已入库的有近三万条数据。

Data
Data

Data

进入正题,下面分别介绍拉勾网以及Boss直聘网岗位招聘数据的爬取心得,不过网站的反爬策略和网页结构随时都有发生变动的可能,因此还是需要根据实际情况进行再调整。本次分享的内容截止到2018年09月28日,在实际运行项目中依然生效。

拉勾

  • 关闭默认cookie(否则会跟请求头中的Cookie冲突),自定义请求headers并添加随机Cookie属性
    • settings.py中找到并设置COOKIES_ENABLED = False
    • 可以在spider代码中为Request手动添加headers,或者修改settings.py中的DEFAULT_REQUEST_HEADERS属性,或者编写自定义的HeadersMiddleware(继承DefaultHeadersMiddleware,重写process_request方法,别忘了配置)

拉勾网的cookie,用uuid随机生成即可,参考如下:

    def random_cookie():
        args = (uuid.uuid4(),) * 5
        cookie = 'user_trace_token={}; LGUID={}; JSESSIONID={}; LGSID={}; LGRID={}'.format(*args)

        return cookie
  • 控制并发请求数及设置下载延迟

settings.py中找到并设置如下,因此理论上一天可抓60/2 * 2 * 60 * 24 =86400条数据:

    # 当并发数和下载延迟均设置为2时,没有出现反爬限制(可多次尝试)
    CONCURRENT_REQUESTS = 2
    DOWNLOAD_DELAY = 2

补充:上述说明中,请求Cookie是必须要加的,否则会重定向到登录页面;在未使用ip代理的情况下,并发数不宜设置过大,亲测是直接封了IP...

Boss直聘

对比拉勾网,感觉直聘网的反爬策略会更加严格,不过抓慢一点还是可以的(这样理论上一天是60/5 * 1 * 60 * 24 =17280条数据)

  • 设置随机User-Agent(可能非必需)
  • 控制并发请求数、下载延迟
    # 这么慢还是被限制...
    CONCURRENT_REQUESTS = 1
    DOWNLOAD_DELAY = 5
  • 加入验证码识别

事实上,这种情况下限制后是被重定向到一个验证码页面。本人目前的解决方案是编写自定义的CustomRedirectMiddleware(继承RedirectMiddleware,重写process_response方法进行验证码识别[第三方API])

小结

分享的都是比较曲中的解决方案,不差钱的建议直接上ip代理(实测过免费的,别指望了)。

相关代码 - 拉勾 相关代码 - boss

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.09.28 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 拉勾
  • Boss直聘
  • 小结
相关产品与服务
验证码
腾讯云新一代行为验证码(Captcha),基于十道安全栅栏, 为网页、App、小程序开发者打造立体、全面的人机验证。最大程度保护注册登录、活动秒杀、点赞发帖、数据保护等各大场景下业务安全的同时,提供更精细化的用户体验。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档