当前位置: 首页 > 编程日记 > 正文

爬了20W+条猫咪交易数据,它不愧是人类团宠

作者 | 叶庭云

来源 | 修炼Python

头图 | 下载于视觉中国

前言

看到可爱的猫咪表情包,总是会忍不住收藏,晒部分图如下:

认识的一些朋友也养了猫,比如橘猫、英短、加菲猫之类的,看他们发朋友圈撸猫,老羡慕了,猫咪真的太可爱啦。发现一个专门交易猫猫的网站—猫猫交易网可以云看猫:http://www.maomijiaoyi.com/

从这个网站里爬取了猫猫品种介绍的数据,以及 20W+ 条猫猫交易数据,以此来了解一下可爱的猫咪。

数据获取

打开猫猫交易网,先爬取猫咪品种数据,打开页面可以看到猫猫品种列表:

但只显示了每种猫猫的品种名,参考价格,点进详情页,可以看到更加详细的数据:品种名、参考价格、中文学名、基本信息、性格特点、生活习性、优缺点、喂养方法等。

检查网页,可以发现网页结构简单,容易解析和提取数据。爬虫代码如下:

  1# -*- coding: UTF-8 -*-2"""3@File    :cat_kind_spider.py4@Author  :叶庭云5@CSDN    :https://yetingyun.blog.csdn.net/6"""7import requests8import re9import csv10from lxml import etree11from tqdm import tqdm12from fake_useragent import UserAgent1314# 随机产生请求头15ua = UserAgent(verify_ssl=False, path='fake_useragent.json')1617def random_ua():        # 用于随机切换请求头18    headers = {19        "Accept-Encoding": "gzip",20        "Accept-Language": "zh-CN",21        "Connection": "keep-alive",22        "Host": "www.maomijiaoyi.com",23        "User-Agent": ua.random24    }25    return headers262728def create_csv():          # 创建保存数据的csv29    with open('./data/cat_kind.csv', 'w', newline='', encoding='utf-8') as f:30        wr = csv.writer(f)31        wr.writerow(['品种', '参考价格', '中文学名', '别名', '祖先', '分布区域',32                     '原产地', '体型', '原始用途', '今日用途', '分组', '身高',33                     '体重', '寿命', '整体', '毛发', '颜色', '头部', '眼睛',34                     '耳朵', '鼻子', '尾巴', '胸部', '颈部', '前驱', '后驱',35                     '基本信息', 'FCI标准', '性格特点', '生活习性', '优点/缺点',36                     '喂养方法', '鉴别挑选'])373839def scrape_page(url1):      # 获取HTML网页源代码 返回文本40    response = requests.get(url1, headers=random_ua())41    # print(response.status_code)42    response.encoding = 'utf-8'43    return response.text444546def get_cat_urls(html1):    # 获取每个品种猫咪详情页url47    dom = etree.HTML(html1)48    lis = dom.xpath('//div[@class="pinzhong_left"]/a')49    cat_urls = []50    for li in lis:51        cat_url = li.xpath('./@href')[0]52        cat_url = 'http://www.maomijiaoyi.com' + cat_url53        cat_urls.append(cat_url)54    return cat_urls555657def get_info(html2):    # 爬取每个品种猫咪详情页里的有关信息58    # 品种59    kind = re.findall('div class="line1">.*?<div class="name">(.*?)<span>', html2, re.S)[0]60    kind = kind.replace('\r','').replace('\n','').replace('\t','')61    # 参考价格62    price = re.findall('<div>参考价格:</div>.*?<div>(.*?)</div>', html2, re.S)[0]63    price = price.replace('\r', '').replace('\n', '').replace('\t', '')64    # 中文学名65    chinese_name = re.findall('<div>中文学名:</div>.*?<div>(.*?)</div>', html2, re.S)[0]66    chinese_name = chinese_name.replace('\r', '').replace('\n', '').replace('\t', '')67    # 别名68    other_name = re.findall('<div>别名:</div>.*?<div>(.*?)</div>', html2, re.S)[0]69    other_name = other_name.replace('\r', '').replace('\n', '').replace('\t', '')70    # 祖先71    ancestor = re.findall('<div>祖先:</div>.*?<div>(.*?)</div>', html2, re.S)[0]72    ancestor = ancestor.replace('\r', '').replace('\n', '').replace('\t', '')73    # 分布区域74    area = re.findall('<div>分布区域:</div>.*?<div>(.*?)</div>', html2, re.S)[0]75    area = area.replace('\r', '').replace('\n', '').replace('\t', '')76    # 原产地77    source_area = re.findall('<div>原产地:</div>.*?<div>(.*?)</div>', html2, re.S)[0]78    source_area = source_area.replace('\r', '').replace('\n', '').replace('\t', '')79    # 体型80    body_size = re.findall('<div>体型:</div>.*?<div>(.*?)</div>', html2, re.S)[0]81    body_size = body_size.replace('\r', '').replace('\n', '').replace('\t', '').strip()82    # 原始用途83    source_use = re.findall('<div>原始用途:</div>.*?<div>(.*?)</div>', html2, re.S)[0]84    source_use = source_use.replace('\r', '').replace('\n', '').replace('\t', '')85    # 今日用途86    today_use = re.findall('<div>今日用途:</div>.*?<div>(.*?)</div>', html2, re.S)[0]87    today_use = today_use.replace('\r', '').replace('\n', '').replace('\t', '')88    # 分组89    group = re.findall('<div>分组:</div>.*?<div>(.*?)</div>', html2, re.S)[0]90    group = group.replace('\r', '').replace('\n', '').replace('\t', '')91    # 身高92    height = re.findall('<div>身高:</div>.*?<div>(.*?)</div>', html2, re.S)[0]93    height = height.replace('\r', '').replace('\n', '').replace('\t', '')94    # 体重95    weight = re.findall('<div>体重:</div>.*?<div>(.*?)</div>', html2, re.S)[0]96    weight = weight.replace('\r', '').replace('\n', '').replace('\t', '')97    # 寿命98    lifetime = re.findall('<div>寿命:</div>.*?<div>(.*?)</div>', html2, re.S)[0]99    lifetime = lifetime.replace('\r', '').replace('\n', '').replace('\t', '')
100    # 整体
101    entirety = re.findall('<div>整体</div>.*?<!-- 页面小折角 -->.*?<div></div>.*?<div>(.*?)</div>', html2, re.S)[0]
102    entirety = entirety.replace('\r', '').replace('\n', '').replace('\t', '').strip()
103    # 毛发
104    hair = re.findall('<div>毛发</div>.*?<div></div>.*?<div>(.*?)</div>', html2, re.S)[0]
105    hair = hair.replace('\r', '').replace('\n', '').replace('\t', '').strip()
106    # 颜色
107    color = re.findall('<div>颜色</div>.*?<div></div>.*?<div>(.*?)</div>', html2, re.S)[0]
108    color = color.replace('\r', '').replace('\n', '').replace('\t', '').strip()
109    # 头部
110    head = re.findall('<div>头部</div>.*?<div></div>.*?<div>(.*?)</div>', html2, re.S)[0]
111    head = head.replace('\r', '').replace('\n', '').replace('\t', '').strip()
112    # 眼睛
113    eye = re.findall('<div>眼睛</div>.*?<div></div>.*?<div>(.*?)</div>', html2, re.S)[0]
114    eye = eye.replace('\r', '').replace('\n', '').replace('\t', '').strip()
115    # 耳朵
116    ear = re.findall('<div>耳朵</div>.*?<div></div>.*?<div>(.*?)</div>', html2, re.S)[0]
117    ear = ear.replace('\r', '').replace('\n', '').replace('\t', '').strip()
118    # 鼻子
119    nose = re.findall('<div>鼻子</div>.*?<div></div>.*?<div>(.*?)</div>', html2, re.S)[0]
120    nose = nose.replace('\r', '').replace('\n', '').replace('\t', '').strip()
121    # 尾巴
122    tail = re.findall('<div>尾巴</div>.*?<div></div>.*?<div>(.*?)</div>', html2, re.S)[0]
123    tail = tail.replace('\r', '').replace('\n', '').replace('\t', '').strip()
124    # 胸部
125    chest = re.findall('<div>胸部</div>.*?<div></div>.*?<div>(.*?)</div>', html2, re.S)[0]
126    chest = chest.replace('\r', '').replace('\n', '').replace('\t', '').strip()
127    # 颈部
128    neck = re.findall('<div>颈部</div>.*?<div></div>.*?<div>(.*?)</div>', html2, re.S)[0]
129    neck = neck.replace('\r', '').replace('\n', '').replace('\t', '').strip()
130    # 前驱
131    font_foot = re.findall('<div>前驱</div>.*?<div></div>.*?<div>(.*?)</div>', html2, re.S)[0]
132    font_foot = font_foot.replace('\r', '').replace('\n', '').replace('\t', '').strip()
133    # 后驱
134    rear_foot = re.findall('<div>前驱</div>.*?<div></div>.*?<div>(.*?)</div>', html2, re.S)[0]
135    rear_foot = rear_foot.replace('\r', '').replace('\n', '').replace('\t', '').strip()
136
137    # 保存前面猫猫的各种有关信息
138    cat = [kind, price, chinese_name, other_name, ancestor, area, source_area,
139           body_size, source_use, today_use, group, height, weight, lifetime,
140           entirety, hair, color, head, eye, ear, nose, tail, chest, neck, font_foot, rear_foot]
141
142    # 提取标签栏信息(基本信息-FCI标准-性格特点-生活习性-优缺点-喂养方法-鉴别挑选)
143    html2 = etree.HTML(html2)
144    labs = html2.xpath('//div[@class="property_list"]/div')
145    for lab in labs:
146        text1 = lab.xpath('string(.)')
147        text1 = text1.replace('\n','').replace('\t','').replace('\r','').replace(' ','')
148        cat.append(text1)
149    return cat
150
151
152def write_to_csv(data):     # 保存数据  追加写入
153    with open('./data/cat_kind.csv', 'a+', newline='', encoding='utf-8') as fn:
154        wr = csv.writer(fn)
155        wr.writerow(data)
156
157
158if __name__ == '__main__':
159    # 创建保存数据的csv
160    create_csv()
161    # 猫咪品种页面url
162    base_url = 'http://www.maomijiaoyi.com/index.php?/pinzhongdaquan_5.html'
163    # 获取品种页面中的所有url
164    html = scrape_page(base_url)
165    urls = get_cat_urls(html)
166    # 进度条可视化运行情况    就不打印东西来看了
167    pbar = tqdm(urls)
168    # 开始爬取
169    for url in pbar:
170        text = scrape_page(url)
171        info = get_info(text)
172        write_to_csv(info)

运行效果如下:

成功爬取了猫咪品种数据保存到csv,接下来爬取猫猫交易数据,进入到买猫卖猫页面:

爬取更详细的数据需要进入详情页,包含商家信息、猫咪品种、猫龄、价格、标题、在售只数、预防等信息。

由于数据量较大,可以分开爬取,先获取到每一页中的所有猫猫详情交易链接的 url 保存到csv,再读取 csv 中的 url 来请求,爬取每条交易数据,爬虫思路跟前面类似,为了加快爬取效率,可以使用多线程或者异步爬虫。最终获取了 20W+ 条数据。

数据探索

通过词云图来直观看一下,可爱的猫咪都有那些品种。

看各种猫咪的体型分布

所有品种的猫咪里,大型的只有一个品种,是布偶猫,其他品种都是中小型,那以后看见体型比较大的,可以先想到布偶猫。

橘猫是世界各地都有的,不愧是我大橘猫。俗话说 "十个橘猫九个胖还有一个压塌炕"。橘猫比起其他花色的猫咪更喜欢吃东西,它们的食欲很好,能更好地生存,可能这也是橘猫在世界范围都有的原因吧。可它却是小型猫,橘猫小时候颜值一般挺高,看起来小小的一只,又嫩又可爱的,但等橘猫长大以后,才真正地意识到什么是 "橘足轻重"。

下面来看猫咪的交易数据,在交易的猫咪中,哪些品种交易数量最多呢?

橘猫的交易数量最多呀,之前也提到橘猫世界各地都有,从这里也可以看到橘猫数量最多。其次是咖啡猫,布偶猫,英短蓝白猫等。

再看看卖猫商家地区分布

四川,重庆,广东是猫咪售卖商家数量最多的省份,江浙沪等地区猫咪售卖商家数量也很多,均在 10000 家以上。

缅因猫、布偶猫均价名列前茅啊,橘猫的均价排倒数第二,看来挺实惠。

这些售卖的猫咪猫龄一般为多大呢?

售卖的猫咪猫龄主要在1-6个月,都是刚出生还未满半岁的小猫咪呀。这时候的小猫咪应该很可爱吧,等待有缘的主人把它带回家。

最后来看一下网站里价格最贵的猫咪和浏览次数最多的猫咪

 1# -*- coding: UTF-8 -*-2"""3@File    :浏览最多_价格最贵的.py4@Author  :叶庭云5@CSDN    :https://yetingyun.blog.csdn.net/6"""7import pandas as pd89df = pd.read_excel('处理后数据.xlsx')
10print(df.info())
11df1 = df.sort_values(by='浏览次数', ascending=False)
12print(df1.iloc[:3, ::].values)
13print('----------------------------------------------------------')
14df2 = df.sort_values(by='价格', ascending=False)
15print(df2.iloc[:3, ::].values)
1# 浏览次数最多的
2http://www.maomijiaoyi.com/index.php?/chanpinxiangqing_441879.html
3http://www.maomijiaoyi.com/index.php?/chanpinxiangqing_462431.html
4http://www.maomijiaoyi.com/index.php?/chanpinxiangqing_455366.html

浏览次数最多的是这一家卖的缅因猫,浏览次数为16164。emmm,感觉这种猫咪看着还挺凶的,不怎么可爱。

反观浏览次数排第二、第三的,价格便宜不少,预防都打了3针疫苗,在售只数还比较充裕,还比第一可爱好多(个人感觉)。

1# 价格最贵的如
2http://www.maomijiaoyi.com/index.php?/chanpinxiangqing_265770.html
3http://www.maomijiaoyi.com/index.php?/chanpinxiangqing_281910.html
4http://www.maomijiaoyi.com/index.php?/chanpinxiangqing_230417.html

价格最贵的发现均为 3000 元的布偶猫。查阅资料发现,布偶猫,大型猫咪,不仅购买的时候价格高昂,饲养成本也比较高,因为食量和运动量都比较大,而且美容等相关费用也会高一些。

参考文章:

https://mp.weixin.qq.com/s/-Fh156bh1166R9fqNa6OmQ

福 利

CSDN给大家发压岁钱啦!

2月4日到2月11日每天上午11点

价值198元的芒果TV年卡,价值99元的CSDN月卡现金红包,CSDN电子书月卡等奖品大放送!百分百中奖

电脑端点击链接参与:

https://t.csdnimg.cn/gAkN

更多精彩推荐
☞英超引入 AI 球探,寻找下一个足球巨星☞三年投 1000 亿,达摩院何以仗剑走天涯?☞程序员硬核“年终大扫除”,清理了数据库 70GB 空间
☞2021年浅谈多任务学习
点分享点收藏点点赞点在看

相关文章:

数据中心建设“优劣”在于这几个关键问题

数据中心的建设是一个整体结构&#xff0c;任何一个细节规划忽略都有可能导致问题的发生&#xff0c;规划设计的优劣&#xff0c;也只有在系统运行后才能做客观的评估&#xff0c;很多问题要经过较长时间&#xff0c;甚至是设备或系统的一个生命周期内才能暴露出来。因此&#…

如何有效的使用C#读取文件

你平时是怎么读取文件的&#xff1f;使用流读取。是的没错&#xff0c;C#给我们提供了非常强大的类库&#xff08;又一次吹捧了.NET一番&#xff09;&#xff0c;里面封装了几乎所有我们可以想到的和我们没有想到的类&#xff0c;流是读取文件的一般手段&#xff0c;那么你真的…

eclipse 默认jdk 的设置 eclipse.ini -vm 参数

2019独角兽企业重金招聘Python工程师标准>>> eclipse 的配置文件 eclipse.ini 不仅仅可以设置eclipse的堆栈内存大小&#xff0c;也可设置默认使用的jdk版本。 一、现有个eclipse 默认启动jdk版本是jdk1.5&#xff0c;需更改为1.6 步骤如下&#xff1a; 方法1&#…

用韩信三技能,讲清楚一致性哈希

作者 | 悟空聊架构来源 | 悟空聊架构头图 | 下载于视觉中国韩信点兵的成语来源淮安民间传说。常与多多益善搭配&#xff0c;寓意越多越好。我们来看下主公刘邦和韩信大将军的对话。刘邦&#xff1a;“你觉得我可以带兵多少&#xff1f;”韩信&#xff1a;“最多十万。”刘邦不解…

有计划地开放数据 促进大数据法规落地

5月1日起&#xff0c;《贵阳市政府数据共享开放条例》正式实施。 《条例》的出台&#xff0c;仅仅是我市大数据发展步入法治轨道的开始。如何更好地让《条例》实现落地&#xff0c;成为新的课题。 2017年1月18日&#xff0c;贵阳市政府数据开放平台正式上线。目前&#xff0c;平…

C#中Base64之编码,解码方法

编码 public string EncodeBase64(string code_type,string code) { string encode ""; byte[] bytes Encoding.GetEncoding(code_type).GetBytes(code); try { encode Convert.ToBase64String(bytes); } catch { encode code; } return encode; }…

自回归与非自回归模型如何兼得?预训练模型BANG或许可解

作者 | 齐炜祯、宫叶云、段楠来源 | 微软研究院AI头条头图 | 下载于视觉中国编者按&#xff1a;近两年&#xff0c;预训练技术的发展极大地提高了自然语言生成的效果&#xff0c;但随着数据量和模型大小的增加&#xff0c;模型在使用时的推断耗时也随之变大。为了降低自回归生成…

STL--自定义类型的排序

STL的排序太坑了&#xff0c;尤其是在VS2010上重载sort函数的第三个比较参数的时候。 invalid operator < 这个错在写多关键字排序的时候就没有停止过。 本来想查书解决&#xff0c;结果各种重载都试了还是不行&#xff0c;百度才知道是因为&#xff1a;strict weak orderin…

《树莓派Python编程指南》——2.3 小结

本节书摘来自华章计算机《树莓派Python编程指南》一书中的第2章&#xff0c;第2.3节,作者&#xff1a;&#xff08;美&#xff09; Alex Bradbury Ben Everard更多章节内容可以访问云栖社区“华章计算机”公众号查看。 2.3 小结 我们的Python快速导览到此为止。希望这些程序能…

十年沉浮,用Python看创业公司消亡史

作者 | 叶庭云来源 | 修炼Python头图 | 下载于视觉中国前言IT桔子有一个新经济死亡公司数据库&#xff1a;https://www.itjuzi.com/deathCompany&#xff0c;统计了2000-2020年之间比较出名的公司 "死亡" 数据。"死亡公司数据库" 的公司关闭时间是依据公开…

.NET下正则表达式应用的四个示例

1.确认有效电子邮件格式 下面的代码示例使用静态 Regex.IsMatch 方法验证一个字符串是否为有效电子邮件格式。如果字符串包含一个有效的电子邮件地址&#xff0c;则 IsValidEmail 方法返回 true&#xff0c;否则返回 false&#xff0c;但不采取其他任何操作。您可以使用 IsVali…

static的本质

通过反编译发现&#xff0c;static的本质是abstract sealed。因此&#xff0c;无法继承System.Math类&#xff0c;因为它是static的。转载于:https://www.cnblogs.com/Benjamin/p/3319856.html

Sunrun2016年Q3财务业绩强劲 冲刺全年目标

美国第二大住宅太阳能光伏系统安装商Sunrun&#xff0c;第三季度业绩表现强劲&#xff0c;促使该公司提高其今年的部署前景。Sunrun也采用当下流行的零首付商业模式&#xff0c;从而获取长期收益。 Sunrun2016年Q3财务业绩强劲 冲刺全年目标责任编辑&#xff1a;editor006 作者…

tcpdump移植和使用

tcpdump移植和使用[摘要]&#xff1a;本文主要讲解了tcpdump相关概念和主要参数的使用&#xff0c;并通过事例来讲解tcpdump的用法&#xff0c;最后讲解如何将其移植到嵌入式开发环境&#xff0c;使其在嵌入式主控板中发挥其强大功能。一. tcpdump概念tcpdump就是dump the traf…

在ASP.NET中自动给URL地址加上超链接

作为一个程序员&#xff0c;在完成设计后还要根据程序的情况以及用户的反映不断对程序进行改进&#xff0c;这样才能不断地完善自己的作品。我在制作完软件商务网 http://www.bizsofts.com 的论坛后&#xff0c;发现人们总喜欢在帖子中加上各种有用的URL链接或Email地址。而我当…

释放联接新价值,华为提出“1+N”5G目标网,推动运营商构筑四大数字化转型的核心能力

近日&#xff0c;在MWCS 2021 媒体分析师预沟通会上&#xff0c;华为常务董事、运营商BG总裁丁耘发表了主题为《点亮未来&#xff0c;释放联接新价值》的主题演讲&#xff0c;提出华为将立足联接&#xff0c;通过持续的技术与商业创新&#xff0c;为客户创造价值&#xff0c;为…

光伏电价断崖式下跌 企业遭遇成长烦恼

在弃光限电严重、补贴欠发(三年缺口将达600亿元)、用地问题突显的情况之下&#xff0c;近日&#xff0c;2017年光伏上网电价将酝酿下调近三成&#xff0c;新“四座大山”将蚕食新能源企业的利润。 协合新能源 在香港上市的协合新能源却在不利情况下逆势扩张&#xff0c;营收从2…

asp.net2.0如何加密数据库联接字符串

asp.net2.0如何加密数据库联接字符串 在asp.net2.0中,发布网站时,加密web.config,这样可以有效保证数据库用户和密码安全,其步骤如下: 1.添加密钥 执行:C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/aspnet_regiis -pc "hnlaw" -exp 其中"hnlaw"为密钥名…

机器学习 KNN算法实践

作者 | 叶庭云来源 | 修炼Python头图 | 下载于视觉中国KNN算法简介KNN&#xff08;K-Nearest Neighbor&#xff09;最邻近分类算法是数据挖掘分类&#xff08;classification&#xff09;技术中常用算法之一&#xff0c;其指导思想是"近朱者赤&#xff0c;近墨者黑"&…

【生活随想】实习结束以及开始校园招聘

我发现很多时候我处理事情的思维是局限的&#xff01;就拿前几天辞职的事情来说吧&#xff0c;我原打算直接向公司辞职&#xff0c;但后来听同学说“还是先试着向公司请假比较好”&#xff0c;不用细想也是&#xff0c;如果公司同意我请假&#xff0c;我还能给自己留一条后路&a…

《21世纪机器人》一一第1章 他用自己的思想打造机器人

第1章 他用自己的思想打造机器人 我在前面说过&#xff0c;这本书的结尾是吉米站在后台&#xff0c;准备闪亮登场&#xff0c;这是他的首次亮相。当我把吉米的这张照片发给我太太时&#xff0c;她很快回复&#xff1a;“这真的是用你的思想打造出的机器人&#xff01;&#xff…

牛年快乐~新一年从甜蜜的烘焙里学AI

作者 | 神经小兮来源 | HyperAI超神经头图 | 下载于视觉中国经过数千年的积累&#xff0c;人类已经开发出了各色美味&#xff0c;但我们的味蕾却永远不知满足。谷歌一位 AI 开发者&#xff0c;为了探索新的可能&#xff0c;用 AI 来开发新的甜点食谱。AI 在菜谱开发这一领域&am…

Datalist控件,Repeater控件如何分页?

Asp.net提供了三个功能强大的列表控件&#xff1a;DataGrid、DataList和Repeater控件&#xff0c;但其中只有DataGrid控件提供分页功能。相对DataGrid&#xff0c;DataList和Repeater控件具有更高的样式自定义性&#xff0c;所以很多时候我们喜欢使用DataList或Repeater控件来显…

java List集合中contains方法总是返回false

ArrayList的contains方法 java 今天在用ArrayList类的caontains方法是遇到了问题&#xff0c;我写了一个存放User类的ArrayList 但在调用list.contains(user)时总是返回false。 去看了下ArrayList的源码&#xff0c;源码如下&#xff1a; Java代码 public boolean contains…

营销自动化的4大预测分析错误

预测分析是数字营销的新领域。许多专家已经讨论了将预测分析与营销自动化工具&#xff08;如HubSpot和Marketo&#xff09;合并的好处。 将预测分析整合到用户的营销自动化策略中可能非常有益&#xff0c;但也很难执行。以下是可能会阻止其实施的一些常见的错误&#xff1a; 1.…

Prolog学习:数独和八皇后问题

上一篇简单介绍了下Prolog的一些基本概念&#xff0c;今天我们来利用这些基本概念解决两个问题&#xff1a;数独和八皇后问题。 数独 数独是一个很经典的游戏&#xff1a; 玩家需要根据nn盘面上的已知数字&#xff0c;推理出所有剩余空格的数字&#xff0c;并满足每一行、每一列…

每年节省170万美元的文档预览费用,借助机器学习的DropBox有多强​?

【CSDN 编者按】Dropbox 借助机器学习的预测功能&#xff0c;每年能为公司节省了一百多七十多万美元的基础架构成本。非常了不起的成就。本文&#xff0c;一起来看一看 Dropbox 采用机器学习的经过&#xff0c;以及分析一下其中的利弊。译者 | 弯月 责编 | 张文出品 | CSDN&a…

asp.net 对xml文件的读写,添加,修改,删除操作

asp.net 对xml文件的读写,添加,修改,删除操作 下面有代码调试正确 using System; using System.Collections; using System.ComponentModel; using System.Data; using System.Drawing; using System.Web; using System.Web.SessionState; using System.Web.UI; using…

阿里重金投数梦工场 布局PaaS动了谁的奶酪

就目前云计算市场来看&#xff0c;巨头的争夺表面上还在IaaS激战&#xff0c;但实际上他们对PaaS也在默默布局。6月8日&#xff0c;PaaS相关服务商数梦工场宣布完成光大实业资本、阿里巴巴等公司共同投资的7.5亿元A轮融资。值得注意的是&#xff0c;阿里巴巴是几位投资方中唯一…

ASP.net中太长的数据缩略显示

问题&#xff1a;用<%# DataBinder.Eval(Container.DataItem,"NewsID"&#xff09;%>显示数据的&#xff0c;如果标题太长了怎么规定字数&#xff0c;多余的用"..."代替解决方法&#xff1a; 1.使用后台代码解决&#xff1a; cs文件代码&#xff1a;…