使用Python中的Beauty soup从网站上的javascript结构提取数据时遇到的问题
我正试图从一个使用Javascript结构加载数据的网站上抓取数据。我用这个问题的解决方案来实现这一点。在获取JSON数据字典之后,我对其进行了迭代,以成功获取设备名称和价格数据 上述问题解决方案中提到的代码实际上是从一个窗口中提取数据,该窗口具有设备名称和价格,其属性在代码中称为使用Python中的Beauty soup从网站上的javascript结构提取数据时遇到的问题,javascript,python,json,python-2.7,html-parsing,Javascript,Python,Json,Python 2.7,Html Parsing,我正试图从一个使用Javascript结构加载数据的网站上抓取数据。我用这个问题的解决方案来实现这一点。在获取JSON数据字典之后,我对其进行了迭代,以成功获取设备名称和价格数据 上述问题解决方案中提到的代码实际上是从一个窗口中提取数据,该窗口具有设备名称和价格,其属性在代码中称为window.rates 问题:如果你看一下网站的结构,它有三个部分 第一部分包含带有计划名称及其其他详细信息的窗口 第二部分包含带有设备名称和价格的窗口(这是我当前正在从中提取数据的窗口) 第三部分包含计划名称、设备
window.rates
问题:如果你看一下网站的结构,它有三个部分
请帮助我解决此问题。您提供了一个指向上一个问题的链接,其中提到了您感兴趣的网站: 你只要看看代码就行了 假设您选择“红色M”作为计划,选择“三星Galaxy SIII Blau(蓝色)/16 GB。底部部分将显示: 详细项目 Einmalige Kosten(一次性成本)
window.phones
window.rates
window.discounts
window.goodies
window.promotions
我将带您浏览数据结构。您必须自己编写代码
windows.phones
,包含以下条目(与我们的示例保持一致):
我添加了注释以显示计划名称
在这里,我们看到细节项目2
此处列出的SKU是在窗口中定义的计划子SKU。费率。对于“红色M”,我们有:
我再次为链接的数据添加了注释。注意,许多设备都可以链接到同一个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
还通过subsku
的promotions
列表链接到windows.promotions
:
window.promotions = {
27:{
promotionId:"27",
promotionName:"24 x 5 Euro Smartphone-Rabatt",
promotionValue:"-5",
Type:"absolute",
duration_in_months:"24",
deeplinkParameter:""
},
// . . .
}
这给了我们第5项的细节
windows.折扣
包含详细项目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
)
就这样,只要将这5个对象解析成Python对象,就可以得到所需的所有数据
window.promotions = {
27:{
promotionId:"27",
promotionName:"24 x 5 Euro Smartphone-Rabatt",
promotionValue:"-5",
Type:"absolute",
duration_in_months:"24",
deeplinkParameter:""
},
// . . .
}
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"
}
};