京东商城的爬虫学习,遇到了一些难点,下面将我遇到的全部爬虫问题和爬虫架构问题,写在博客里供大家参考,问题比较多,会持续更新,本篇文章主要将把所有问题罗列出来,其问题的解决方案将放到新的博客里。
本京东项目使用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怎么办

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐