所以我有幾個問題,我正試圖解決。使用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