也许,在 3 月底,Google 更改了 Play 商店的 HTML 代码。
附加信息的结构也发生了变化。
包括我在内的一些开发者使用 Jsoup 在 Play 商店中检查最新版本。
也许你正在使用这样的代码:
Document doc = Jsoup.connect
("https://play.google.com/store/apps/details?id=name.package.your").get();
Elements Version = doc.select(".content");
for (Element v : Version) {
if (v.attr("itemprop").equals("softwareVersion")) {
VersionMarket = v.text();
}
}
但是,在 play store 更改后,您的代码返回 null。
因为,“itemprop”和“softrwareVersion”就这样消失了。
enter image description here
因此,您需要一种新方法来使用 Jsoup 在 Google Play 商店的 ADDITION INFORMATION 中解析您的应用版本。
try {
Document doc = Jsoup
.connect(
"https://play.google.com/store/apps/details?id=name.package.your")
.get();
Elements Version = doc.select(".htlgb ");
for (int i = 0; i < 5 ; i++) {
VersionMarket = Version.get(i).text();
if (Pattern.matches("^[0-9]{1}.[0-9]{1}.[0-9]{1}$", VersionMarket)) {
break;
}
}
上面的代码工作如下。
- 解析 Play 商店的应用页面。
-
选择所有“htlgb”内容。
- 如图片中的“2018 年 3 月 3 日”、“1,000+”、“2.0.4”、“4.4 及更高版本等”
在 [for Loop] 中,[Regex] 找到与您的版本模式(如 2.0.4)匹配的值并停止。
- VersionMarket 是您的“应用版本”,您可以使用它。
//2018-08-04 添加评论
由于某种原因,上面的代码返回了有关“安装”的信息,而不是“版本信息”。
因此,如果你修改如下所示的代码,你可以再次返回“版本信息”。
try {
Document doc = Jsoup
.connect(
"https://play.google.com/store/apps/details?id=name.package.your")
.get();
Elements Version = doc.select(".htlgb ");
for (int i = 0; i < 10 ; i++) {
VersionMarket = Version.get(i).text();
if (Pattern.matches("^[0-9]{1}.[0-9]{1}.[0-9]{1}$", VersionMarket)) {
break;
}
}
以上代码将“for break”中的数字从5改为10。
因为 Google Play 商店的 HTML 代码中“htlgb”代码的数量发生了变化。