您提供了指向您之前的问题的链接,其中提到了您感兴趣的网站:
http://www.vodafone.de/privat/tarife/red-smartphone-tarife.html
你只需要看看代码。
假设您选择“Red M”作为计划和“Samsung Galaxy SIII Blau (Blue) / 16 GB。底部将显示:
详细项目
Einmalige Kosten(一次性费用)
- Anschlusspreis(激活费用):29.99
Einmalzahlung(一次性付款)智能手机:9.90
Monatliche Kosten(月费)
红色 M 59.99
- 24 x 10 % 拉巴特(折扣)-6.00
24 x 5 欧元智能手机-拉巴特 -5.00
学生、年轻人或残障人士也可享受三种 10.00/月折扣中的一种。
您需要解析(可能使用 Python 的 JSON 模块)这些 JavaScript 分配:
window.phones
window.rates
window.discounts
window.goodies
window.promotions
我将带您了解数据结构。您必须自己编写代码。
windows.phones
, 包含此条目(与我们的示例保持一致):
window.phones = {
sku1224225:{
name:"Samsung Galaxy SIII Blau 16 GB",
image:"/images/m1057472_300599.jpg",
deliveryTime:"Lieferbar innerhalb 48 Stunden",
sku1444275:{p:"prod1334441",e:"49.90"}, // "Vodafone Red S"
sku1444283:{p:"prod1334441",e:"9.90"}, // "Vodafone Red M"
sku1444291:{p:"prod1334441",e:"9.90"}, // "Vodafone Red Premium"
sku1444286:{p:"prod1334441",e:"9.90"}, // "Vodafone Red L"
sku1104261:{p:"prod1334441",e:"99.90"} // "Vodafone Basic 100"
},
// . . .
}
我添加了注释以显示计划名称。
在这里,我们看到了细节项目 2。
此处列出的 SKU 是在 中定义的计划子 SKU window.rates
。对于“红色 M”,我们有:
window.rates = {
sku1444279:{
label:"Vodafone Red M",
propId:"prod1564453",
subsku:{
sku1444283:{ // "Samsung Galaxy SIII Blau 16 GB", etc.
monthlyChargest:"59.99",
activationCharge:"29.99",
discounts:[
"sku140988", // "Ich bin 18-25 Jahre jung" (-10)
"sku140989", // "Ich habe einen Schwerbehindertenausweis" (-10)
"sku140990" // "Ich bin Student und jünger als 30" (-10)
],
promotions:["27"], // "24 x 5 Euro Smartphone-Rabatt" (-5)
Goodies:[
"prod1674486" // "24 x 10 % Rabatt" (-6)
]
},
// more subskus here . . .
}
},
// . . .
}
我再次为链接数据添加了评论。请注意,许多设备可以链接到同一个 subsku。
我们看到细节项目 1 和 3 以及指向项目 4、5 和 6 的链接。
Goodies
windows.goodies
通过prod
号码的链接:
window.goodies = {
prod1674486:{
SkuId:"prod1674486",
Name:"24 x 10 % Rabatt",
Value:"-6",
Type:"absolute",
DurationInMonth:"24"
},
// . . .
}
这给了我们细节项目 4。
window.rates
windows.promotions
还通过subsku
的promotions
列表链接到:
window.promotions = {
27:{
promotionId:"27",
promotionName:"24 x 5 Euro Smartphone-Rabatt",
promotionValue:"-5",
Type:"absolute",
duration_in_months:"24",
deeplinkParameter:""
},
// . . .
}
这为我们提供了详细信息 5。
windows.discounts
包含详细信息项目 6 的特别折扣:
window.discounts = {
sku140988:{
SkuId:"sku140988",
Name:"Ich bin 18-25 Jahre jung",
Type:"absolute",
DurationInMonth:"24",
Value:{
sku1444295:"-10", // "Vodafone Red Premium"
sku1444279:"-10", // "Vodafone Red M"
sku1444290:"-20"} // "Vodafone Red L"
},
sku140989:{
SkuId:"sku140989",
Name:"Ich habe einen Schwerbehindertenausweis",
Type:"absolute",
DurationInMonth:"24",
Value:{
sku1444295:"-10", // "Vodafone Red Premium"
sku1444279:"-10", // "Vodafone Red M"
sku1444290:"-20"} // "Vodafone Red L"
},
sku140990:{
SkuId:"sku140990",
Name:"Ich bin Student und jünger als 30",
Type:"absolute",
DurationInMonth:"24",
Value:{
sku1444295:"-10", // "Vodafone Red Premium"
sku1444279:"-10", // "Vodafone Red M"
sku1444290:"-20"} // "Vodafone Red L"
}
};
适当的折扣金额由计划主要 SKU 选择(通过 下列出的 SKU value
)。
就是这样。只需将这 5 个对象解析为 Python 对象,您就会拥有所需的所有数据。