1. 程式人生 > >C# NetCore使用AngleSharp爬取周公解夢資料 起因和頁面資料拆解

C# NetCore使用AngleSharp爬取周公解夢資料 起因和頁面資料拆解

 

起因

  最近突然心血來潮想做個小程式,學習一下小程式開發流程,然後新手就想做個查詢的就可以了,少點互動能力,這種思來想去還是周公解夢比較靠譜,

網上一搜,還真有小程式原始碼,但是這裡面似乎資料都是取第三方api的或者固定死的演示資料,或者殘缺不全的資料,然後csdn上面居然還有積分下載周公

解夢資料的,評論都是說資料不全的,我這個腦子啊,這我就不願意了,我要就要最全的,搞出來我也分享一下資料。。。。。。(其實是不是還是拖延症啊

不想學習小程式!!!)

  然後網上搜了一下週公解夢,目前有一家資料是比較全的,而且頁面結構是比較清晰的,可能是有程式設計師在維護。。。鎖定資料來源xzw。com 當然,如果

這種行為侵犯了xzw權益,請聯絡我刪除。

言歸正傳

  下面開始訪問資料站,結構還是挺清晰的,夢的類別 夢的名稱 裡面的子項 及簡介,我們大致可以設計一個表出來了

  

  我們再點選進去看一下子項的內容,原來子項的內容都是依賴於外層的“孕婦”,這裡我使用的是mysql資料庫儲存,

其實這種結構似乎更適合儲存為nosql資料庫,不糾結於這個,最多加個外來鍵就OK。

  

可能初步的表是這樣的

Dream表

Id 自增列
Name 夢的名字 例如 “孕婦”
Summary 簡介  這是搜尋列表最外層的那個簡介
CateName 分類名稱 總分類可能就那固定的幾個,我們這裡只儲存名稱就好了
CreateTime  附屬屬性
Url 詳細頁面地址(這個是在下面會做說明)

 

 

 

 

 

 

 DreamInfo表

Id  自增列
FkDreamId   Dream表主鍵
DreamName Dream表Name  例如 孕婦,為了不重複查詢直接id和name都儲存
Name 夢的詳細名稱,例如 未婚女人夢見孕婦
Content 夢的詳細內容
CreateTime 附屬屬性,時間

 

 

 

 

 

 

 

分解頁面結構

然後開始我們的頁面分解之路,這個頁面我們可以拿到  DreamName 還有Dream Summary 後面還要進入詳情頁繫結內容建立從屬關係,

那麼儲存下這個詳細頁面的url,供我們第二次爬詳細頁面的時候使用,所以才會有上面dream表裡的url欄位,邊發現邊修改。

  

具體思路就有了,先獲取分類下的名稱資訊、簡介以及詳情頁url資訊,下面有翻頁,還是老規矩 遞迴翻頁直到結束。

再來看看翻頁,發現翻頁這個地方,這裡有個下一頁的按鈕,那麼這個是不是就可以一直往下翻頁了呢,我們就用它了。完美

 

 

總結

  感覺自己腦袋亂糟糟的,沒有固定的想法,可能一個想法牽扯出來多個想法,忘記自己第一個想法是什麼了,感覺這種思維很可怕,鹹魚一般的感覺。

下一章開始詳細編碼。。。