C#爬取京东手机数据+PowerBI数据可视化展示

news/2024/11/30 1:25:54/

此系列博文链接

  • C#爬虫基本知识
  • Html Agility Pack解析html

TODO:
EF6中基本认识.
EF6操作mysql
MySQL乱码问题

C#爬虫

在开头贴一下github仓库地址,代码都放在上面.有需要可以参考. 仓库地址

  1. 分析网站,抓包
    这部分还算简单,用谷歌自带的开发者工具查看请求头参数等信息
    搜索商品基本的url是:https://search.jd.com/Search.补上一些参数即可,用谷歌浏览器的代理,否则拿不到数据.京东对爬虫还是比较友好的,除了一个浏览器代理其他没啥反爬虫的玩意儿.下面这个是RequestHeader,加上圈出来的三个即可,其他的没有用到
    还有几个参数要设置一下要在url中设置一下.
    在C#中写了个静态方法设置url的参数:

     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;
    }
    
  2. 编写代码
    根据习惯还是分了三层(捂脸),项目目录结构:

    这里遇到的问题是在用entityframe6操作数据库的时候,采用codefirst方式,生成数据库的时候数据库的默认编码不是utf8,后来在数据库连接字符串里加了个 Character Set=utf8,设置完之后还是没用,又跑到阿里云设置了一下mysql的默认编码方式,然后好了.具体解决会写在另一篇博文中.

    还有问题就是codefirst建立模型,模型之间的关系一开始没有搞清楚,导致像数据库写数据的时候一直无法写入.一个写了三个实体类,分别是Shop Commodity Mobile,Shop(店铺)和Mobile(继承自Commodity)是多对多的关系,一个店铺可以有多个商品,一个商品也可以来自多个店铺,然而我这里并没有用商品Id作为主键,反而一个商品可以出现任意次,因为考虑到分析商品价格随时间的变化.关于EntityFramework6如何设置模型之间的关系也会在另一篇博文呈现.
    程序运行的一个截图:

    我大概爬了五千条左右的数据,再来数据库的截图

    其他的代码不一一赘述了,放到github上了.
    仓库地址

下面还有PowerBI部分

花了不少时间处理数据库那边,这部分就简单的图形化操作了一下,虽然拿了五千条左右的数据,还真不知道用来干点啥(捂脸).
最直观的是想比较同一个手机在不同店铺的售价,用了个直方图,但是效果不太理想,筛选了几种型号的手机,可惜京东上的手机店铺就那么几家,大部分都是自营店铺.截图如下:

然后用了一个饼图,看了一下各个手机厂商旗下都有多少种不同型号的手机.感叹一下,华为出手机真是勤快,不看不知道一看吓一跳,华为手机的型号,居然占了将近四分之一了.其实数据未必可靠,毕竟像oppo和vivo这些厂很多机型基本只有线下才有的卖.另外可以看到型号较少的手机美图(偷笑),报上了小米的大腿,也算是有个善终吧,当年自己还在官网想抢购一个美图然后加钱卖出去呢(可惜没抢到).

看了下powerBI自带的还有个漏斗图,随便拖了几个字段进去,看一下京东上哪家店铺卖的手机种类最多吧.可以看到,小米自营店卖的在售的手机是最多的

PowerBI确实很强大哦,微软爸爸的技术很牛逼,看了下PowerBI里还有一个叫多行卡的图表控件,用它做个表,以后买手机再也不用纠结了.拖几个字段进去,然后可以利用字段筛选满足自己要求的手机.

上面的看了那么多,好像还有一个最重要的就是价格还没有分析!暂时想不出什么好的方法来分析价格,就简单粗暴的上个折线图吧,看看最贵的手机是谁.

本以为苹果手机是最贵的,没想到华为的保时捷版本力压群雄,成为京东上最贵的手机.奇怪我记得当年这玩意儿我也在官网上抢购过(没抢到),不是说是限量发售吗~~.

最后实在想不出还能搞啥了,就用饼图和柱状图拖了几个字段看一下效果:

可以很直观的看到华为的价格是最贵的.

总结

利用这次做的东西,巩固了一下C#的linq的操作,之前数据库用的比较新的efcore操作的这次用的ef6,遇到些坑,不过,Linq真是个好东西,再来一句微软牛逼!!虽然微软曾经也有不完美的地方,但是正在往越来越好的方向发展,希望中国未来也能出现像微软这样优秀的软件+硬件厂商(近几年微软手机做的不行,surface系产品还是不错的,自己买了个二手的surface pro4用着还是舒服的).这次很大一部分时间是被坑在了数据库MySql上了,不是微软亲儿子结合ef用起来没那么爽>唉,还是自己比较菜吧(捂脸),好在最后问题解决了.

转载于:https://www.cnblogs.com/Laggage/p/10740189.html


http://www.ppmy.cn/news/319012.html

相关文章

闽商蔡文胜:磁带、域名、美图的50亿美元进阶

文/网易科技王先|贺树龙 2016 年 11 月 29 日&#xff0c;蔡文胜从厦门飞抵香港&#xff0c;开始了美图公司香港 IPO 的第一天路演行程。第二天一大早&#xff0c;他兴奋地发了一条配有两张图片的朋友圈&#xff0c;一张是风云际会的维多利亚港&#xff0c;一条是经过美颜相机处…

美图凭什么估值50亿美元?马化腾的用户和马云的女人

近日&#xff0c;创业8年的美图正式向港交所提交IPO申请&#xff0c;业界传闻此次美图拟募资10亿美金&#xff0c;估值或将达50亿美元&#xff0c;将成为今年仅次于Line的全球第二大技术类IPO&#xff0c;也将成为港股中仅次于腾讯的第二大互联网公司。如果按照50亿美金的估值来…

互联网攻陷中老年人群:奶奶抢红包,外婆学美图

大年三十的夜晚&#xff0c;我们一家人围在饭桌前&#xff0c;谈笑之间还不忘用智能手机进行“互动”。先是集五福互换花花卡&#xff0c;大人小孩相互扫福字;然后是家族群里的接力发红包&#xff0c;这是我们这个家族的一项“传统”。 去年在一旁观战的奶奶&#xff0c;今年也…

扎进“手机”红海,蔚来改造“生态圈”

2021年里&#xff0c;跨界造车成为一种别样的“常态”。 无论是互联网巨头&#xff0c;还是手机厂商&#xff0c;甚至是家电房企&#xff0c;风风火火的造车运动在去年几乎席卷了中国的资本市场。跨界&#xff0c;似乎成为一件容易事&#xff0c;变成企业们打开第二增长曲线的…

知乎日报富文本处理android,一个追求高效的学习者手机里装有哪些APP?

谁说处女座一定要按颜色排列来的&#xff1f; 做为一个学习者&#xff0c;手机会成为一个追求高效率的工具。今天我们就扒掉小六的外衣&#xff0c;看看这个一直叫嚣追求高效的学习者他的手机里都装了哪些APP。 注明&#xff1a;请以下露脸的APP的公关们看到自己家的APP都给我打…

王峰十问蔡文胜:BEC美链究竟是不是美图上市公司的资产?

编辑 | Joyce 美编 | 淀粉叔叔 蔡文胜&#xff0c;美图公司董事长&#xff0c;交易过众多优质域名、连续举办三届中国互联网站长大会、天使投资人、「三点钟无眠区块链」微信群关键推动人。 王峰与蔡文胜的对话就BEC美链项目的归属、蔡文胜个人的持币数量、投资情况等进行…

做手机壁纸的小程序需要服务器吗,用上这些微信小程序,不再到处找壁纸

欣赏美丽的壁纸绝对是一件令人愉悦的事情&#xff0c;而四处找壁纸的过程就没那么愉快了。手机上直接访问图片网站实际体验多有不便&#xff0c;而壁纸 App 琳琅满目的分类与功能又略显累赘有的应用还有惹人厌的广告 &#xff0c;这时打开简洁明了的小程序欣赏美丽的壁纸就不失…

吐槽智能手机上那些不爽的事

不知不觉&#xff0c;我们已经度过了那个下个软件需要注册机的时代&#xff0c;也不必为了内存是不是双通道而纠结&#xff0c;更不会去为了一个新电影去找字幕&#xff0c;互联网时代把事情变得简单了。而我们只要手机在手&#xff0c;就不会不安&#xff0c;似乎手中的智能手…