代碼下載鏈接 蘇寧百萬(wàn)級(jí)商品爬蟲
目錄
- 思路講解 類別爬取
- 思路講解 類別頁(yè)數(shù)爬取
- 商品爬取
3.1 思路講解 商品爬取1
3.2 思路講解 商品爬取2
3.3 代碼講解 商品爬取 - 索引講解
4.1 代碼講解 索引建立
4.2 代碼講解 索引查詢
聲明
本系列文章+代碼案例時(shí)對(duì)爬蟲的內(nèi)容學(xué)習(xí)概括生年,希望更多的人知道如何使用c#進(jìn)行簡(jiǎn)單爬蟲項(xiàng)目的開發(fā)闽铐,并不存在惡意工具部分電商網(wǎng)站的觀念。分享的的代碼中對(duì)網(wǎng)頁(yè)爬取都做了休眠等待(200-500)毫秒的限制堤魁,希望大家不要惡意使用蜜暑。
學(xué)習(xí)回顧
首先簡(jiǎn)單概述一下自己的學(xué)習(xí)計(jì)劃铐姚,在爬蟲這個(gè)模塊的學(xué)習(xí)過程中「睾矗可以了解到很多的知識(shí)隐绵,例如
- Xpath語(yǔ)法(網(wǎng)頁(yè)解析),css(網(wǎng)頁(yè)解析)拙毫,正則表達(dá)式(文本處理或網(wǎng)頁(yè)解析)
- .net 第三方爬蟲類庫(kù) html agility pack +第三方爬蟲框架(用的相對(duì)較少) 學(xué)習(xí)的時(shí)候還是趨向于寫一些底層的東西
- 異步多線程依许,主要用在蘇寧百萬(wàn)數(shù)據(jù)爬取時(shí)。多線程爬取缀蹄,多線程存儲(chǔ)峭跳。
- Lucene索引和分詞 簡(jiǎn)單使用膘婶,并未深入。主要時(shí)對(duì)爬取的百萬(wàn)數(shù)據(jù)建立索引庫(kù)蛀醉,做一個(gè)簡(jiǎn)單的查詢悬襟。
運(yùn)行環(huán)境+技術(shù)選型
- ide 使用 vs 2017
- 數(shù)據(jù)庫(kù) sqlserver 2008r2 或mysql
- 語(yǔ)言 c#
一、開發(fā)預(yù)估周期和安排
1拯刁、開發(fā)周期
因?yàn)楣ぷ鲿r(shí)無(wú)聊想到的東西脊岳,所以在不耽誤工作的情況下,編碼周期為1個(gè)禮拜垛玻。
2割捅、程序模塊抽象描述
數(shù)據(jù)庫(kù)相關(guān)
- 實(shí)體
- 數(shù)據(jù)庫(kù)訪問層
- 業(yè)務(wù)邏輯層
網(wǎng)頁(yè)爬取
- 分析器(包含取數(shù)據(jù)功能)
- 服務(wù)層(取分析器數(shù)據(jù),調(diào)用業(yè)務(wù)邏輯層方法帚桩,將數(shù)據(jù)入庫(kù))
索引
- 分詞幫助(盤古分詞器)
- 索引幫助
界面描述
采用winform程序的形式亿驾,分首頁(yè)+4個(gè)子頁(yè)面
首頁(yè)是對(duì)主要功能的概述,添加4個(gè)按鈕账嚎,每個(gè)按鈕觸發(fā)新的頁(yè)面添忘,按鈕分別為:
- 數(shù)據(jù)初始化(進(jìn)行數(shù)據(jù)初始化功能)
- 商品類別(對(duì)商品類別的爬取和更新)
- 商品內(nèi)容(對(duì)商品內(nèi)容的爬取和更新)
- 建立索引(使用Lucene+分詞器建立索引)
- 查詢產(chǎn)品
三烟零、開發(fā)中可能遇到的問題
- 因?yàn)橹岸际菍?duì)單頁(yè)面的爬取土砂,或者是對(duì)某些分頁(yè)數(shù)據(jù)爬取龙亲,都只是一個(gè)小demo。所以在設(shè)計(jì)程序結(jié)構(gòu)的過程中一定會(huì)存在問題恳不。當(dāng)我已經(jīng)完成項(xiàng)目后檩小,重新回顧自己的代碼也覺得好多地方存在可以修改的地方。
- 對(duì)很多技術(shù)的生疏烟勋,異步多線程在工作中不長(zhǎng)使用规求,沒有踩過坑,所以一定會(huì)跌的很慘卵惦。xpath阻肿,正則這些語(yǔ)法的遺忘
- 界面設(shè)計(jì)可能會(huì)很丑,不美觀
四沮尿、功能設(shè)計(jì)圖
在新建解決方案后丛塌,我首先建立一個(gè)demo項(xiàng)目,這個(gè)項(xiàng)目只是用來(lái)做效果圖畜疾,用來(lái)讓自己對(duì)所做的程序有個(gè)大概的布局赴邻。
首頁(yè)設(shè)計(jì)圖:
首頁(yè)是對(duì)功能的詳細(xì)抽象描述,所以定義三個(gè)模塊啡捶,每個(gè)模塊再放置自己的內(nèi)容姥敛。
“初始化數(shù)據(jù)”只是一個(gè)按鈕,點(diǎn)擊彈出提示框瞎暑,點(diǎn)擊確認(rèn)清理所有產(chǎn)品數(shù)據(jù)
五彤敛、程序準(zhǔn)備:
對(duì)商品進(jìn)行爬取与帆,首先要知道有多少類別,不同類別數(shù)據(jù)性展示是否為不同形式墨榄。如果為不同形式玄糟,那就要區(qū)分爬取,如果相同渠概,那就更加方便茶凳。
產(chǎn)品有那么多屬性嫂拴,取哪些字段播揪,百萬(wàn)的數(shù)據(jù)量應(yīng)該如何存儲(chǔ),同樣的百萬(wàn)數(shù)量應(yīng)該如果查詢筒狠,這都是在前期應(yīng)該考慮好的問題猪狈。不然等開始編碼再修改就很麻煩