我在Blue Nile(蓝色尼罗河)上通过python爬取一百万颗钻石,最终选出心仪的一颗
--------代码在文章最下面----------
俗话说:钻石恒久远,一颗永流传
先说一下背景,楼主是某小型互联网公司的数据分析师,因为以前有编程的基础,所以略懂一点爬虫相关的技术。由于到了结婚的年龄,所以找到政府领取了女朋友一枚,并且把婚期订到了今年的圣诞节。婚期有了怎么能没有婚礼必备的东西----钻石呢?
先是在各种周大福、周六福、周福福看,后来又在某东、某宝、某官网看,翻遍了网上各种达人教你如何选择钻戒的文章、视频。
最终总结了一下,钻石主要看一下几点:
价格 克拉数 颜色 净度 切工 荧光
由于加工好的成品钻价格实在是太高了,所以就把主意打到了"裸钻"身上,去了大罗塘一类的珠宝批发市场,热了一身的汗,但是还是感觉没有合适的
无意间发现一个神仙网站就是这个bluenile
同样50分H颜色VS1切工的钻石,在这里买裸钻居然还不到1W块
先看一下关于这个品牌的百度百科
通过我的一番筛选最终选定了一颗55分、F色、VVS2净度、3EX切工、无荧光的钻戒,花费价格¥18000
啰啰嗦嗦,说了这么多,现在上代码
# 下面的代码是爬取并写入到CSV文件中
import requests
import time
import json
import pandas as pd
import reheaders = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Safari/537.36","Cookie": "browserCheck=ver~1&browserCheck~true; holiday=ver~1&hasAdjustedHolidayShipping~false; GUID=3AC0A668_AF4E_4021_88C3_172963437EAA; bld=ver~9&cl~0.0; wishlist=ver~2&wishList~0; migrationstatus=ver~2&redirected~false; bncust=ver~2&SignInURL~https://secure.bluenile.com/cn/account/settings&CustName~chuo&CID~12694412-2-2834999531; pop=ver~4&belpop~false&china~true&emailpop~false&french~false&ie~false&internationalSelect~false&iphoneApp~false&s100off~false&survey~false&uae~false&webroompop~false; dsearch=ver~9&visible~800000000&newUser~true&shownHolidayShipping~&state~RD---------------------0------0,null,null-default-asc-CNY-------; bnsetsearch=ver~3&filters~ring_style|Solitaire|Ring+Style&id~BYOR+Setting+Search&sort~BS; devconfig=ver~4&debugmode~false&force_serve_awesome~false&force_serve_local_chat~false&force_serve_local_yotpo~false&force_serve_non_awesome~false&force_serve_non_local_chat~false&force_serve_non_local_yotpo~false&force_serve_non_pre_launch~false&force_serve_non_solr~false&force_serve_pre_launch~false&force_serve_solr~false; sitetrack=ver~3&jse~1; locale=ver~2&country~CHN¤cy~CNY&language~zh-Hans&productSet~BNCN; IR_gbd=bluenile.com; bnper=ver~7&NIB~1&DM~-&EMAIL~dN6dTZp3qzrDPmJsihd9zydr4ZadzVcO&EU_AGREED~false&GUID~3AC0A668_AF4E_4021_88C3_172963437EAA&LV~2022-06-24T21:13:47.178-07:00&PRE-MOBILE~Web&NOT_SELL~false&PAGING~-1&SESS-CT~4&STC~3671KW&FB_MINI~false&SUB~true; bnses=ver~4&ats~20220624+21:13&cdclosed~false&filterTooltipClosed~false&ace~false&quickshipseen~false&fbcs~false&imeu~false&nu~false&ss~0&legal_notice_eu_closed~false&mbpop~false&sswpu~false&exitpu~false&spvc~4&deo~false&nogtm~false; device=ver~2&orientation~Landscape&resolution~975x809&device_type~Desktop; bn_uuid-ssn=0ILW2XgXHMktI33B0CaF86Q3sONToYu7yrsxfZk7N8gNSZHylpZCJ2dvtu6MYCzuGVp3KVPop0hwQc7gfjrcf0rweQ8kmDzYUsIQatyy2klUBvDmb9O4O7KsARhEA8uXfsw3ecRVdq2i8DGGjrfiH5BO4; bn_uuid=0ILW2XgXHMktI33B0CaF86Q3sONToYu7yrsxfZk7N8gNSZHylpZCJ2dvtu6MYCzuGVp3KVPop0hwQc7gfjrcf0rweQ8kmDzYUsIQatyy2klUBvDmb9O4O7KsARhEA8uXfsw3ecRVdq2i8DGGjrfiH5BO4; IR_9430=1656130432573|0|1656130432573||; IR_PI=79e3d7ad-1005-38d9-8862-07b2bc3d62bc|1656216832573","Accept-Language": "zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7","Host": "www.bluenile.com","Referer": "https://www.bluenile.com/cn/diamond-search","sec-ch-ua": '" Not A;Brand";v="99", "Chromium";v="102", "Google Chrome";v="102"',"sec-ch-ua-mobile": "?0","sec-ch-ua-platform": "Windows","Sec-Fetch-Dest": "empty","Sec-Fetch-Mode": 'cors',"Sec-Fetch-Site": "same-origin","x-bn-pageid": "Diamond Search"
}end_price = '11416.39'
count = 1
count_num = 0
for _ in range(1000):time_stamp = time.time() * 10data = {"startIndex": 0,"pageSize": 500,"_": time_stamp,"unlimitedPaging": "false","sortDirection": "asc","sortColumn": "price","shape": "RD","minPrice": end_price,"minCarat": 0.49,"maxCarat": 0.79,"minCut": "Ideal","maxCut": "Astor Ideal","minColor": "I","maxColor": "D","minClarity": "SI1","maxClarity": "FL","minFluorescence": "Faint","maxFluorescence": None,"maxDateType": "MANUFACTURING_NOT_REQUIRED","isQuickShip": "false","bestValueSort": "false","hasVisualization": "false","isFiltersExpanded": "true","astorFilterActive": "false","country": "CHN","language": "zh-Hans","currency": "CNY","productSet": "BNCN"}url = 'https://www.bluenile.com/api/public/diamond-search-grid/v2?'response = requests.post(url, headers=headers, data=data)content = response.json()diamond_list = content["results"]# print(diamond_list[0])for diamond in diamond_list:girdle = diamond['girdle'][0] # 腰身price = diamond['price'][0][4:] # 价格color = diamond['color'][0] # 颜色sku = diamond['skus'][0]fluorescence = diamond['fluorescence'][0] # 荧光carat = diamond['carat'][0] # 克拉数clarity = diamond['clarity'][0] # 净度cut = diamond['cut'][0]['label'] # 切工if girdle.endswith('Faceted'):count_num += 1print("----------------------------","*****第{}颗*****".format(count_num),sku,"克拉数:{}".format(carat),"颜色:{}".format(color),"价格:{}".format(price),"荧光:{}".format(fluorescence),"净度:{}".format(clarity),"切工:{}".format(cut),"----------------------------",sep='\n')# 文件存储with open('bluenile.csv', 'a', encoding='utf-8-sig') as fp:s = f'{count_num},{sku},{carat},{color},{price},{fluorescence},{clarity},{cut}\n'fp.write(s)end_price = price.replace(',', '')exclude = 500 * countprint('已扫完{}颗,现在最高价格为:{}'.format(exclude, end_price))count += 1time.sleep(10)
输出结果如下所示:
… … … … … … … … … … … …
第1颗
LD16821489
克拉数:0.49
颜色:H
价格:11,418.65
荧光:无
净度:SI1
切工:理想
… … … … … … … … … … … …
已扫完500颗,现在最高价格为:11567.81
通过Excel选出喜欢的并进行标记,再将标记得编号,写成代码,把GIA证书进行下载,逐个对比GIA正证书的参数
import requests
import ioli = ["LD16035818", "LD16887180", "LD17615365", "LD16451860", "LD18785995", "LD15844901", "LD18483769", "LD15517006"]for b in li:pdf_url = f'https://bnsec.bluenile.com/bnsecure/certs/{b}/GIA?country=CHN&language=zh-Hans'send_headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36","Connection": "keep-alive","Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8","Accept-Language": "zh-CN,zh;q=0.8"}response = requests.get(pdf_url, headers=send_headers)bytes_io = io.BytesIO(response.content)# print(bytes_io)a = bytes_io.getvalue()# print(a)with open(f"{b}.PDF", mode='wb') as f:f.write(bytes_io.getvalue())print(f'编码{b}_GIA证书.PDF,下载成功!')
输出结果如下所示:
编码LD16035818_GIA证书.PDF,下载成功!
编码LD16887180_GIA证书.PDF,下载成功!
编码LD17615365_GIA证书.PDF,下载成功!
我在Blue Nile(蓝色尼罗河)上通过python爬取一百万颗钻石,最终选出心仪的一颗相关推荐
- 利用python爬取_在知乎上利用Python爬取了三百万数据!服务器崩了!企业级大项目...
请各位注意: 以下所有分析结果都基于我抓取到的这300万用户的个人信息,非权威分析,仅供参考. 数据抓取时间为2017年7月份,用户数据会随着时间推移而变化,所以该报告具有一定时效性. 知乎的用户个人 ...
- python爬取电影评分_用Python爬取猫眼上的top100评分电影
代码如下: # 注意encoding = 'utf-8'和ensure_ascii = False,不写的话不能输出汉字 import requests from requests.exception ...
- qu.la网站上的小说爬取
qu.la网站上的小说爬取 ##这个项目是我最早开始写的爬虫项目,代码比较简陋 在写这个项目时,我还不会Python的协程编程,用协程可提升爬虫速度至少5倍,参考我的文章[线程,协程对比和Python ...
- python 下载网页文件_『如何用python把网页上的文本内容保存下来』python爬取网页内容教程...
python爬虫:如何爬网页数据并将其放在文本 用requests库 r=r.requests.get(url) r.concent 保存到文件里就行了 如何用python把网页上的文本内容保存下来 ...
- steam夏日促销用Python爬取排行榜上的游戏打折信息
不知不觉,一年一度如火如荼的 steam 夏日促销悄然开始了.每年通过大大小小的促销,我的游戏库里已经堆积满还未下载过的游戏.但所谓"买到就是赚到,G胖一定大亏"的想法日渐流行,指 ...
- steam夏日促销悄然开始,用Python爬取排行榜上的游戏打折信息
前言 很多人学习python,不知道从何学起. 很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手. 很多已经做案例的人,却不知道如何去学习更加高深的知识. 那么针对这三类人,我给大 ...
- 阿凡达时隔十年重映,王者归来还是炒冷饭?Python爬取上千条评论并分析
[CSDN 编者按]<阿凡达>十年后再次重映,果不其然话题量十足,可能这就是神级影片的召唤力吧.在怀旧的氛围中,我们得以重新审阅这部曾经的现象级.划时代的作品. 作者 | 刘早起 ...
- 爬虫实战2(上):爬取豆瓣影评
这次我们将主要尝试利用python+requsets模拟登录豆瓣爬取复仇者联盟4影评,首先让我们了解一些模拟登录相关知识补充.本文结构如下: request模块介绍与安装 get与post方式介 ...
- 利用python爬取丁香医生上新型肺炎数据,并下载到本地,附带经纬度信息
新增:国外疫情网站介绍 已更新:爬取国外疫情数据 已更新:新型肺炎历史数据下载 2020年3月27日补充: 制作了一个全球肺炎数据查询下载网站,效果如下: 访问地址:http://119.3.227. ...
最新文章
- Gold Code,Gold Sequence
- 手机qq2008触屏版_天猫精灵 CC10 电池版体验:只卖 799 元的平板电脑,比 iPad 更适合老人小孩...
- Linux系统安全及应用(账号控制、su、sudo、开关机安全控制、终端登录安全控制等)
- SAP Spartacus FeaturesConfig
- 幻世机器人_2014年科幻动作《幻世追踪/启动机械码》BD中英双字幕
- eval函数pythonmopn_python3中的 eval函数
- JUC:ConcurrentSkipListMap/ConcurrentSkipListSet(并发容器)
- 串口 接收端_嵌入式系统串口传输int float型数据的处理
- 发现一款好用的备份新浪博客的工具
- 双向板受力特点_弹性减震球形钢支座/双向弹簧铰支座特性
- Atitit 数据库视图与表的wrap与层级查询规范
- python进行数值模拟代码_数值模拟方法
- android加载obj文件,android – 从SD卡Rajawali解析.obj模型
- 第六章:组合数据类型练习[人名独特性统计]学习思考
- 数据时代的来临,大数据价值主要体现在哪几个方面?
- 机器学习实战-手写识别系统
- 整理各种模板(准备随时弃坑)
- 假设检验2_t分布的应用
- 本世纪最好的NSA!
- Android下拉刷新和上拉加载更多