此係列博文連接html
TODO:
EF6中基本認識.
EF6操做mysql
MySQL亂碼問題mysql
在開頭貼一下github倉庫地址,代碼都放在上面.有須要能夠參考. 倉庫地址git
分析網站,抓包
這部分還算簡單,用谷歌自帶的開發者工具查看請求頭參數等信息
搜索商品基本的url是:https://search.jd.com/Search
.補上一些參數便可,用谷歌瀏覽器的代理,不然拿不到數據.京東對爬蟲仍是比較友好的,除了一個瀏覽器代理其餘沒啥反爬蟲的玩意兒.下面這個是RequestHeader,加上圈出來的三個便可,其餘的沒有用到
還有幾個參數要設置一下要在url中設置一下.
在C#中寫了個靜態方法設置url的參數:github
public static string SetUrlParameters(string url, Dictionary<string, string> parameters) { string result = url; if (parameters.Count > 0) { result += "?"; foreach (KeyValuePair<string, string> keyValuePair in parameters) { result = string.Format("{0}{1}={2}&", result, keyValuePair.Key, keyValuePair.Value); } result = result.TrimEnd('&'); } return result; }
編寫代碼
根據習慣仍是分了三層(捂臉),項目目錄結構:
sql
這裏遇到的問題是在用entityframe6操做數據庫的時候,採用codefirst方式,生成數據庫的時候數據庫的默認編碼不是utf8,後來在數據庫鏈接字符串里加了個 Character Set=utf8
,設置完以後仍是沒用,又跑到阿里雲設置了一下mysql的默認編碼方式,而後好了.具體解決會寫在另外一篇博文中.數據庫
還有問題就是codefirst創建模型,模型之間的關係一開始沒有搞清楚,致使像數據庫寫數據的時候一直沒法寫入.一個寫了三個實體類,分別是Shop
Commodity
Mobile
,Shop(店鋪)和Mobile(繼承自Commodity)是多對多的關係,一個店鋪能夠有多個商品,一個商品也能夠來自多個店鋪,然而我這裏並無用商品Id做爲主鍵,反而一個商品能夠出現任意次,由於考慮到分析商品價格隨時間的變化.關於EntityFramework6如何設置模型之間的關係也會在另外一篇博文呈現.
程序運行的一個截圖:
我大概爬了五千條左右的數據,再來數據庫的截圖
瀏覽器
其餘的代碼不一一贅述了,放到github上了.
倉庫地址markdown
花了很多時間處理數據庫那邊,這部分就簡單的圖形化操做了一下,雖然拿了五千條左右的數據,還真不知道用來乾點啥(捂臉).
最直觀的是想比較同一個手機在不一樣店鋪的售價,用了個直方圖,可是效果不太理想,篩選了幾種型號的手機,惋惜京東上的手機店鋪就那麼幾家,大部分都是自營店鋪.截圖以下:
工具
而後用了一個餅圖,看了一下各個手機廠商旗下都有多少種不一樣型號的手機.感嘆一下,華爲出手機真是勤快,不看不知道一看嚇一跳,華爲手機的型號,竟然佔了將近四分之一了.其實數據未必可靠,畢竟像oppo和vivo這些廠不少機型基本只有線下才有的賣.另外能夠看到型號較少的手機美圖(偷笑),報上了小米的大腿,也算是有個善終吧,當年本身還在官網想搶購一個美圖而後加錢賣出去呢(惋惜沒搶到).
網站
看了下powerBI自帶的還有個漏斗圖,隨便拖了幾個字段進去,看一下京東上哪家店鋪賣的手機種類最多吧.能夠看到,小米自營店賣的在售的手機是最多的
PowerBI確實很強大哦,微軟爸爸的技術很牛逼,看了下PowerBI裏還有一個叫多行卡的圖表控件,用它作個表,之後買手機不再用糾結了.拖幾個字段進去,而後能夠利用字段篩選知足本身要求的手機.
上面的看了那麼多,好像還有一個最重要的就是價格尚未分析!暫時想不出什麼好的方法來分析價格,就簡單粗暴的上個折線圖吧,看看最貴的手機是誰.
本覺得蘋果手機是最貴的,沒想到華爲的保時捷版本力壓羣雄,成爲京東上最貴的手機.奇怪我記得當年這玩意兒我也在官網上搶購過(沒搶到),不是說是限量發售嗎~~.
最後實在想不出還能搞啥了,就用餅圖和柱狀圖拖了幾個字段看一下效果:
能夠很直觀的看到華爲的價格是最貴的.
利用此次作的東西,鞏固了一下C#的linq的操做,以前數據庫用的比較新的efcore操做的此次用的ef6,遇到些坑,不過,Linq真是個好東西,再來一句微軟牛逼!!雖然微軟曾經也有不完美的地方,可是正在往愈來愈好的方向發展,但願中國將來也能出現像微軟這樣優秀的軟件+硬件廠商(近幾年微軟手機作的不行,surface系產品仍是不錯的,本身買了個二手的surface pro4用着仍是舒服的).此次很大一部分時間是被坑在了數據庫MySql上了,不是微軟親兒子結合ef用起來沒那麼爽>唉,仍是本身比較菜吧(捂臉),好在最後問題解決了.