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資訊,下面有翻頁,還是老規矩 遞迴翻頁直到結束。
再來看看翻頁,發現翻頁這個地方,這裡有個下一頁的按鈕,那麼這個是不是就可以一直往下翻頁了呢,我們就用它了。完美
總結
感覺自己腦袋亂糟糟的,沒有固定的想法,可能一個想法牽扯出來多個想法,忘記自己第一個想法是什麼了,感覺這種思維很可怕,鹹魚一般的感覺。
下一章開始詳細編碼。。。