苏宁百万级商品爬取 简述

简介: 代码下载链接 苏宁百万级商品爬虫目录思路讲解 类别爬取思路讲解 类别页数爬取商品爬取3.1 思路讲解 商品爬取13.2 思路讲解 商品爬取23.3 代码讲解 商品爬取索引讲解4.1 代码讲解 索引建立4.2 代码讲解 索引查询声明本系列文章+代码案例时对爬虫的内容学习概括,希望更多的人知道如何使用c#进行简单爬虫项目的开发,并不存在恶意工具部分电商网站的观念。

代码下载链接 苏宁百万级商品爬虫

目录

  1. 思路讲解 类别爬取
  2. 思路讲解 类别页数爬取
  3. 商品爬取
    3.1 思路讲解 商品爬取1
    3.2 思路讲解 商品爬取2
    3.3 代码讲解 商品爬取
  4. 索引讲解
    4.1 代码讲解 索引建立
    4.2 代码讲解 索引查询

声明

本系列文章+代码案例时对爬虫的内容学习概括,希望更多的人知道如何使用c#进行简单爬虫项目的开发,并不存在恶意工具部分电商网站的观念。分享的的代码中对网页爬取都做了休眠等待(200-500)毫秒的限制,希望大家不要恶意使用。

学习回顾

首先简单概述一下自己的学习计划,在爬虫这个模块的学习过程中。可以了解到很多的知识,例如

  1. Xpath语法(网页解析),css(网页解析),正则表达式(文本处理或网页解析)
  2. .net 第三方爬虫类库 html agility pack +第三方爬虫框架(用的相对较少) 学习的时候还是趋向于写一些底层的东西
  3. 异步多线程,主要用在苏宁百万数据爬取时。多线程爬取,多线程存储。
  4. Lucene索引和分词 简单使用,并未深入。主要时对爬取的百万数据建立索引库,做一个简单的查询。

运行环境+技术选型

  • ide 使用 vs 2017
  • 数据库 sqlserver 2008r2 或mysql
  • 语言 c#

一、开发预估周期和安排

1、开发周期

因为工作时无聊想到的东西,所以在不耽误工作的情况下,编码周期为1个礼拜。

2、程序模块抽象描述

数据库相关
  • 实体
  • 数据库访问层
  • 业务逻辑层
网页爬取
  • 分析器(包含取数据功能)
  • 服务层(取分析器数据,调用业务逻辑层方法,将数据入库)
索引
  • 分词帮助(盘古分词器)
  • 索引帮助
界面描述

采用winform程序的形式,分首页+4个子页面
首页是对主要功能的概述,添加4个按钮,每个按钮触发新的页面,按钮分别为:

  • 数据初始化(进行数据初始化功能)
  • 商品类别(对商品类别的爬取和更新)
  • 商品内容(对商品内容的爬取和更新)
  • 建立索引(使用Lucene+分词器建立索引)
  • 查询产品

三、开发中可能遇到的问题

  1. 因为之前都是对单页面的爬取,或者是对某些分页数据爬取,都只是一个小demo。所以在设计程序结构的过程中一定会存在问题。当我已经完成项目后,重新回顾自己的代码也觉得好多地方存在可以修改的地方。
  2. 对很多技术的生疏,异步多线程在工作中不长使用,没有踩过坑,所以一定会跌的很惨。xpath,正则这些语法的遗忘
  3. 界面设计可能会很丑,不美观

四、功能设计图

在新建解决方案后,我首先建立一个demo项目,这个项目只是用来做效果图,用来让自己对所做的程序有个大概的布局。
首页设计图:
首页是对功能的详细抽象描述,所以定义三个模块,每个模块再放置自己的内容。
“初始化数据”只是一个按钮,点击弹出提示框,点击确认清理所有产品数据


img_45134665355e4e3a05a9f334c7639ce4.png
首页.png
img_3924615ffb21a30602dfba78a727fe25.png
商品类别设计图.png
img_bb0539107b00270f492cf875b0728684.png
商品内容设计图.png
img_0428a541720b7f58aa9e0453200096a6.png
建立索引设计图.png
img_687556ed1b208cae02cb86d3ed7a3b62.png
查询产品设计图.png

五、程序准备:

对商品进行爬取,首先要知道有多少类别,不同类别数据性展示是否为不同形式。如果为不同形式,那就要区分爬取,如果相同,那就更加方便。
产品有那么多属性,取哪些字段,百万的数据量应该如何存储,同样的百万数量应该如果查询,这都是在前期应该考虑好的问题。不然等开始编码再修改就很麻烦

目录
相关文章
|
SQL 存储 开发框架
数据库必知词汇:用户定义函数(UDF)
用户定义函数(UDF) 由一个或多个SQL语句组成的子程序,可用于封装代码以便重新使用。通常情况下不将用户限制在定义为SQL语言一部分的内置函数上,而是允许用户创建自己的用户定义函数。
2603 0
|
5月前
|
传感器 存储 Java
Android 3D效果的实现
本文详细讲解了如何在Android中实现3D效果,基于官方Demo并结合实际需求进行调整。通过传感器(Sensor)获取设备旋转数据,利用OpenGL ES绘制3D立方体,实现了动态旋转的视觉效果。文章分为需求分析、效果展示、实现步骤及源码解析,涵盖传感器注册与注销、OpenGL核心方法使用等内容,适合初学者学习参考。文末附完整代码,便于实践操作。
161 0
Android 3D效果的实现
|
10月前
|
Java
java实现从HDFS上下载文件及文件夹的功能,以流形式输出,便于用户自定义保存任何路径下
java实现从HDFS上下载文件及文件夹的功能,以流形式输出,便于用户自定义保存任何路径下
292 34
|
6月前
|
Linux 网络安全 数据安全/隐私保护
在CentOS 7.9中安装sshpass教程
如果在控制台显示出sshpass的使用方法,那就说明我们的大餐已经准备好,sshpass已经成功安装。 以上就是在 CentOS 7.9 中安装 sshpass 的彩色步骤,专业而生动,就像大厨在厨房一样顺利。
256 8
|
存储 缓存 NoSQL
Redis中的rdb和aof
本文深入探讨了Redis的持久化机制,包括RDB和AOF两种方式。详细解释了RDB的工作原理、优势和劣势,以及AOF的实现原理、配置选项、文件重写机制和三种数据同步方式,还介绍了AOF文件修复工具redis-check-aof的使用,并通过实例展示了如何开启和配置AOF持久化方式。
Redis中的rdb和aof
|
存储 安全 Java
Java中使用加密盐
摘要(Markdown格式): 本文介绍了密码安全性中的加盐(Salt)技术,以对抗彩虹表攻击。彩虹表是预先计算的哈希值集合,能威胁到仅使用MD5等简单哈希的密码。加盐是在密码中加入随机字符串,提高破解难度。文章展示了Java代码示例,说明如何生成和验证加盐后的密码。使用Spring Security的BCryptPasswordEncoder也作为例子给出,它提供了内置的加盐和加密功能。即使密码相同,每次加盐后生成的密文都不同,增强了密码的安全性。
591 1
Java中使用加密盐
|
Java Spring
spring boot访问接口报500
spring boot访问接口报500
372 2
|
安全 Java Spring
springboot @Resource、@AutoWaire的用法实战
【4月更文挑战第3天】在Spring Boot中,@Autowired和@Resource注解都用于自动注入依赖,但它们在底层工作方式和使用的场合上存在一些差异。理解这些差异有助于更有效地使用Spring框架。
617 1
|
存储 数据挖掘 BI
离线数据仓库规范
离线数据仓库规范
|
存储 算法 NoSQL
全网最全的分布式ID生成方案解析
全网最全的分布式ID生成方案解析
798 0