所以我有几个问题,我正试图解决。使用re.findall解析javascript
首先我想解析这个javascript我从html获得。
$(文件)。就绪(函数(){ $( '#商品展缩览图')bxSlider({模式: '垂直',自动: 假,控制:真,寻呼机: false,minSlides:4,maxSlides:4, moveSlides:1,slideWidth:250}); itemSelector('commodity-show-form','commodity-show-addcart-submit', [['color','选择颜色'],['尺寸','选择尺寸']],{“39805”:{“Smokey Blue/Mica Blue”,“36”]},“39806”:{“params “:”Smokey Blue/Mica Blue“,”36,5“]},”39807“:{”params“:[”Smokey Blue/Mica Blue“,”37,5“]},”39808“ :{“params”:[“Smokey Blue/Mica 蓝色“,”38“]},”39809“:{”params“:[”Smokey Blue/Mica Blue“, ”38,5“]},”39810“:{”params“/Mica Blue“,”39“]}, ”39811“:{”params“:[”Smokey Blue/Mica Blue“,”40“]},”39812“:{”Smokey Blue/Mica Blue“,”40,5“]},”39814“:{”params“: [”Smokey Blue/Mica Blue“,”42“]}}, [39805,39806,39807,39808,39809 ,39810,39811,39812,39814],'主推车', 'commodity-show-image'); });
res = re.findall(r'{ "params": (.+?)}', text) # text is where javascript text is stored
final = [eval(i) for i in res]
print(final)
我得到以下输出
[[ '烟熏蓝/蓝云母', '36'],[ '烟熏蓝/蓝云母','36,5 '],['烟熏蓝/云母蓝','37,5'],['Smokey Blue/Mica Blue','38'],['Smokey Blue/Mica Blue','38,5'],['Smokey Blue/Mica Blue ['Smokey Blue/Mica Blue','40'],['Smokey Blue/Mica Blue','40,5'],['Smokey Blue/Mica Blue','42' ]]
但现在我不知道该怎么走,从这里开始。我想从
找到这个值39805 10{“39805”:{“params”:[“Smokey Blue/Mica Blue”,“36”]}。我如何解析它,以便说如果我正在寻找与36相关的价值,它会给我39805?
我很抱歉,但我真的很糟糕的解析,我对此很新。
好像你真的想要解析的结果,要像一个字典'{39805 ':' 36' , '39807': '37',.. 。'是对的吗? – saulspatz
你想抓取一个由JavaScript生成的内容的网页? –
@saulspatz是的。但是,我并没有完整的词典,而是在考虑解析特定的价值。像解析值为36并获得它的值,39805 – b0baboi