大船靠岸,激动暂缓:以 Pixel 为例谈二手/水货 Android 手机验机
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大船靠岸,激动暂缓:以 Pixel 为例谈二手/水货 Android 手机验机相关的知识,希望对你有一定的参考价值。
参考技术A转自少数派
随着 5G 网络的解锁,国内玩机用户和原生爱好者群体中间又将迎来一波小小的 Pixel 购机潮。只是相比亚马逊海外淘或 Google Store 海淘转运这样的渠道,国内电商平台代购这样的渠道近几年因为拆修机型的泛滥,早已不再是我们入手 Google Pixel 系列机型的首选——靠岸的 Pixel 大船,也可能是一艘用翻新机骗钱的贼船。
恰逢最近有朋友从某宝入手了一台 Google Pixel 5,这里拉上编辑部内同样是 Pixel 用户的同事一起,希望通过这篇文章为大家提供一些国内入手 Pixel 机型后的验机指引。
P.S. 当然了,Pixel 机型的验机仅仅只是本文的一个切入点,本文所讨论的方法其它 Android 机型或许也能适用,还请具体问题具体分析。
在现实世界中,当我们想确定某个人的身份时,首先会想到的一般都是身份证。而对智能手机而言,IMEI 便是充当「身份证」这一角色的存在。
当我们收到一台 Pixel 手机后,首先要检查的除了外观、屏幕状态是否与卖家描述吻合外,IMEI 也是可以仔细对比、勘察的参数之一。在 Pixel 机型中,IMEI 可以通过外包装盒、SIM 卡卡托以及 Android 系统三个地方进行查询,因为 IMEI 与主板几乎是严格的唯一对应关系,保证手机外包装、SIM 卡卡托和系统内 IMEI 查询结果的统一(部分用户又叫「三码合一」)是检验手机是否为原厂全新或是否经历过较大程度拆修、零部件更换的可靠途径。
外包装盒上的 IMEI 比较好找,Google 一般会将包装盒对应设备的 IMEI 直接以标签的形式注明在包装盒底部的标签上,这份标签通常还会包含条形码、FCC 备案 ID、eSIM ID 和 SKU,信息量非常齐全:
SIM 卡托上的 IMEI 则一般印刷在卡托正面靠外侧的区域,取出卡托后稍加留意应该就能看到:
至于系统内报送的 IMEI,我们则有多种方法可以进行检查,比如在「系统设置 > 关于手机 > IMEI」中直接查看,再比如打开拨号应用、输入 *#06# 并拨号呼出「设备信息」面板等等。
从上述三个地方找到的 IMEI 码如果能够对得上,接下来我们还可以通过 Google Store 提供的官方维修查询服务,进一步验证该 IMEI 对应机型的购买地区和保修信息:在页面中输入 IMEI 后点击查询,如果设备 IMEI 所对应的购买区域和 Google Store 商店当前的页面区域一致,下方便会出现该设备对应的型号、参数和保修截止日期;如果你在输入 IMEI 后页面未能查询到信息,则需要与店家确认设备的实际区域版本,并切换该页面至对应区域重新查询。
另外,在 IMEI Info 针对 Google Pixel 机型提供的 IMEI 查询服务也非常值得一试。除了机型、版本、销售地区外,IMEI Info 甚至还能提供该设备的激活日期、激活时长等信息,方便你进一步确认手机的「真实年龄」。
注意,任何将 IMEI 交给非官方人员、机构的行为都存在安全隐患,如非必要,我们并不建议你使用 IMEI Info。
通过 IMEI 的比对,我们可以基本确认到手机型的新旧、保修状态以及是否有涉及主板更换的大型拆修。于是就有很多人会问,如果这些都没问题,如何确认机型是否有其它拆修情况呢?
如果你购买的是出厂包含 IP68 级防尘防水的旗舰 Pixel 机型,气密性就是一个很好的切入点。拆修一般会破坏掉设备默认的气密性,并且由于成本原因,普通的二手贩子一般也不会对气密性进行修复(当然这件事并不绝对)。
因为现代 Android 设备往往都内置了气压传感器,我们也可以通过机身内部气压传感器读取到的数值变化来判断机身气密性的完好程度。具体操作方法如下:
按压屏幕时,气密性已被破坏的设备因为密闭性较差,会自动对气压进行平衡,气压传感器读数一般也不会因此发生变化;气密性完好的设备,气压传感器读数则会因为按压而出现波动,波动幅度越大,机身内部的封闭性就越好。
通过二手交易渠道购买 Pixel 设备时,很多人往往都会忽略电池 健康 度这项指标。电池 健康 度不佳的设备,即便出厂配备的是大容量电池,最后实际到手的续航体验可能也不会太好。
所以如果你是奔着「收台二手 Pixel 长期体验」去的,到手后检查一下电池循环次数,也能侧面感知到电池 健康 度和设备的真实使用状况。
在命令行窗口列出的结果中,需要我们留意的是 POWER_SUPPLY_CYCLE_COUNT 这一项,这一项对应的是电池循环次数,数值越小,则设备经历过的完整电池充放周期约短,设备电池和设备本身的状况一般也越好。
最后,我们还是建议大家将电池循环次数和上面提到的 IMEI、气密性等检验结果结合起来综合判断——毕竟一台电池 健康 度非常 健康 的手机,也有可能恰好是一台拆修、更换过电池的翻新机。
用Python实现全国二手房数据抓取+地图展示
最近各种政策的出台,导致二手房的价格波动巨大,本文二哥来带领大家通过链家二手房为例,简单分析一下全国多个地区的二手房价格。
【建议先点赞、再收藏】
一、思路❤️
想要获取链家全国二手房的信息,首先我们进入到相关的二手房页面观察一下(以北京为例):
这里可以看到,我们能够看到北京的二手房信息,但是并没有其他省份和城市的选项,因此回到首页寻找各大城市的选项,通过点击首页左上角的城市按钮,可以进入到相关的省份-城市页面:
有了省份-城市页面之后,我们就可以通过该页面获取各个城市的url信息,然后再访问各个url进行二手房数据的抓取就可以了。
整体流程如下
二、获取城市信息❤️
获取城市信息时,我们直接获取到城市页面的HTML进行解析即可,这里因为HTML中有些省份信息的构造不同,因此解析出大部分省份信息使用。
获取城市信息的代码如下:
import random
import time
import csv
import requests
from lxml import etree
import pandas as pd
# 获取各个省份,城市的信息
def city(i, j):
try:
p1 = "//li[@class='city_list_li city_list_li_selected'][{}]/div[@class='city_list']/div[@class='city_province']/div[@class='city_list_tit c_b']/text()".format(
i)
province = et.xpath(p1)[0]
cn1 = "//li[@class='city_list_li city_list_li_selected'][{}]/div[@class='city_list']/div[@class='city_province']/ul/li[{}]/a/text()".format(
i, j)
city_name = et.xpath(cn1)[0]
cu1 = "//li[@class='city_list_li city_list_li_selected'][{}]/div[@class='city_list']/div[@class='city_province']/ul/li[{}]/a/@href".format(
i, j)
city_url = et.xpath(cu1)[0]
except:
return 0, 0, 0
return province, city_name, city_url
# 生成省份-城市-URL字典
dic1 = {}
count = 1
for i in range(1, 15):
for j in range(1, 6):
province, city_name, city_url = city(i, j)
if province != 0:
dic1[count] = [province, city_name, city_url]
count += 1
else:
pass
# dic1
获取后的结果样例如下:
三、获取二手房数据❤️
有了各个城市的主页信息之后,我们就可以尝试通过构造二手房的网址来进行多城市的数据获取了,构造二手房网址的时候我们只需要在URL后缀加上ershoufang/pg{}/即可。有了网址我们就能够按照正常的方式进行数据的获取了:
f = open('全国二手房数据.csv', 'a', encoding='gb18030')
write = csv.writer(f)
def parser_html(pr_ci, page, User_Agent):
headers = {
'User-Agent': User_Agent[random.randint(0,
len(User_Agent) - 1)]
}
for i in range(1, len(pr_ci) + 1):
province = pr_ci.get(i)[0]
city = pr_ci.get(i)[1]
url = pr_ci.get(i)[2] + 'ershoufang/pg{}/'.format(page)
print(url)
html = requests.get(url=url, headers=headers).text
eobj = etree.HTML(html)
li_list = eobj.xpath("//li[@class='clear LOGVIEWDATA LOGCLICKDATA']")
for li in li_list:
title_list = li.xpath(".//div[@class='title']/a/text()")
title = title_list[0] if title_list else None
name_list = li.xpath(".//div[@class='positionInfo']/a[1]/text()")
name = name_list[0] if name_list else None
area_list = li.xpath(".//div[@class='positionInfo']/a[2]/text()")
area = area_list[0] if area_list else None
info_list = li.xpath(".//div[@class='houseInfo']/text()")
info = info_list[0] if info_list else None
if info:
model = size = face = decorate = floor = year = type1 = None
info_list1 = info.split("|")
for i in info_list1:
if '室' in i:
model = i
elif '平米' in i:
size = i
elif '东' in i or '西' in i or '南' in i or '北' in i:
face = i
elif '装' in i or '毛' in i:
decorate = i
elif '层' in i:
floor = i
elif '年' in i:
year = i
elif '板' in i or '塔' in i:
type1 = i
else:
pass
else:
model = size = face = decorate = floor = year = type1 = None
follow_list = li.xpath(".//div[@class='followInfo']/text()")
follow = follow_list[0].split(
'/')[0].strip() if follow_list else None
time1 = follow_list[0].split(
'/')[1].strip() if follow_list else None
price_list = li.xpath(".//div[@class='totalPrice']/span/text()")
price = price_list[0] + '万' if price_list else None
unit_list = li.xpath(".//div[@class='unitPrice']/span/text()")
unit = unit_list[0][2:-4] if unit_list else None
# 具体的城市+楼房信息
list1 = [
province, city, url, title, name, area, model, size, face,
decorate, floor, year, type1, follow, time1, price, unit
]
write.writerow(list1)
time.sleep(random.randint(2, 5))
def serve_forever():
write.writerow([
'province', 'city', 'url', 'title', 'name', 'area', 'model', 'size',
'face', 'decorate', 'floor', 'year', 'type', 'follow', 'time', 'price',
'unit'
])
try:
for i in range(1, 3):
parser_html(dic1, i, User_Agent)
time.sleep(random.randint(1, 3))
except:
pass
进行爬取后的数据如下:
四、绘图❤️
既然我们进行的是对全国数据的抓取,那么最好的呈现方式当然是通过地图展示数据,这里我们通过房源数量的多少作为例子进行地图展示,对于其他的维度进行数据替换即可。
实现方式如下:
from pyecharts import options as opts
from pyecharts.charts import Geo
from pyecharts.faker import Faker
from pyecharts.globals import ChartType
import pandas as pd
ljdata = pd.read_csv("全国二手房数据.csv",encoding = 'gb18030')
pro_num = ljdata['province'].value_counts()
c = (
Geo()
.add_schema(maptype="china")
.add(
"房源数量",
[list(z) for z in zip(pro_num.index, pro_num.values)],
type_=ChartType.HEATMAP,
)
.set_series_opts(label_opts=opts.LabelOpts(is_show=False))
.set_global_opts(
visualmap_opts=opts.VisualMapOpts(),
title_opts=opts.TitleOpts(title="Geo-HeatMap"),
)
)
c.render_notebook()
c.render()
运行后的结果如下:
至此我们的数据获取+可视化就完成了。
❤️点赞呦!❤️
🌟收藏呦!🌟
💎关注呦!💎
以上是关于大船靠岸,激动暂缓:以 Pixel 为例谈二手/水货 Android 手机验机的主要内容,如果未能解决你的问题,请参考以下文章
1个月,6000变3000?谷歌Pixel 6 Pro太不保值了