京东商城爬虫学习,面临的全部爬虫难题&scrapy项目架构难题,以及他们的解决方法(持续更新...)

京东商城的爬虫学习,遇到了一些难点,下面将我遇到的全部爬虫问题和爬虫架构问题,写在博客里供大家参考,问题比较多,会持续更新,本篇文章主要将把所有问题罗列出来,其问题的解决方案将放到新的博客里。
本京东项目使用scrapy框架完成的,所有的功能都是在框架之上使用中间件、扩展等功能实现的,丰富了scrapy框架的使用,对scrapy也有了更深的了解。

本篇文章的扩展博客会一个一个写,不光是分享给大家问题的解决方案,更重要的是遇到这一类问题的思路和突破口,我将每个问题的多种破解的方案、流程详细都会图文并茂的写出来,希望大家持续关注。


一、列表页懒加载后30个商品(已解决)

解决方案:


二、列表页只加载100页数据(已解决)

解决方案:

  • 一、添加筛选时的字段 比如价格、型号

     # 正则提取商品页的所有相关商品
    //div[contains(@class,'J_selectorLine')]/@class
    J_selectorLine s-brand
    J_selectorLine s-category
    J_selectorLine s-category
    J_selectorLine s-line
    J_selectorLine s-line s-senior
    
  • 二、增加筛选条件

  • 三、商品页的其他商品深挖抓取
    详情连接:https://blog.csdn.net/qq_42739440/article/details/102561905


三、详情页的价格js渲染(已解决)

解决方案:

  • 一、selenium获取
  • 二、js请求返回数据

    GET请求:
    https://p.3.cn/prices/mgets?skuIds=J_商品ID

    # 价格请求的返回值:
    [{"cbf":"0","id":"J_100005853638","m":"4999.00","op":"4499.00","p":"4499.00"}]
    
  • 三、商品列表页xpath获取
    详情连接:https://blog.csdn.net/qq_42739440/article/details/102563616

四、商品唯一性问题(已解决)

解决方案:

  • 一、商品编号
  • 二、商品链接

五、ip问题(已解决)

解决方案:

  • 一、代理池
  • 二、减速

六、增量和数据实时更新(已解决)

解决方案:

  • 一、全部链接每日更新、
  • 数据库保存每个商品的链接,需要每日查询一下价格接口,看是否价格变动

    https://p.3.cn/prices/mgets?skuIds=J_商品ID GET请求


七、获取商品型号、系列(已解决)

解决方案:

  • 一、获取列表页的筛选条件

    //div[contains(@class,'J_selectorLine')]/@class 
    J_selectorLine s-brand        # 商品品牌列
    J_selectorLine s-category    # 商品型号等分类列
    J_selectorLine s-category    # 商品分类列
    J_selectorLine s-line          # 商品筛选条件列 
    J_selectorLine s-line s-senior  # 细分条件列
    

    详细信息:https://blog.csdn.net/qq_42739440/article/details/102561905


八、获取不到下一页链接(已解决)

解决方案:

  • 一、获取页码规律,请求100页
    例如一共有100页,页数就是
    1、2、3、4、5、6、7、8
    1、3、5、7、

九、爬虫速度问题


十、数据清理问题(已解决)

解决方案:

  • 一、使用item,在数据提取时进行清洗

十一、mongo数据插入策略,不要一条一条插入(已解决)

解决方案:

  • 一、隔一定时间、积攒一定条数再插入数据库

十二、异常捕获问题(已解决)

解决方案:

  • 一、写一个全局捕获异常的中间件,错误信息写入MongoDB

十三、数据库的执行计划

解决方案:

  • 一、添加索引,执行计划去测,看一下是否是全局搜索还是索引
    500ms以内比较好,1s以内也能接受。

十四、记录抓取数据(已解决)

解决方案:

  • 一、记录日志
  • 二、使用StatCollector扩展+中间件写入数据库

十五、添加MongoDB扩展,以便项目其他地方使用(已解决)

解决方案:

  • 一、scrapy 添加自定义的extensions

十六、添加自定义dont_filter方法(已解决)

解决方案:

  • 一、scrapy 添加自定义的extensions

十七、请求失败的url怎么办

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值