鍍金池/ 問答/人工智能  Java  Python/ scrapy 解析js代碼或正則

scrapy 解析js代碼或正則

用scrapy爬取某網(wǎng)站,數(shù)據(jù)由js生成,用xpath提取script,獲取到如下:

define("page_data",
        {
            "uiConfig": {
                "type": "root",
                "items":[
                    {
                        "comid": "itemBasic",
                        "items":[
                            {
                                "id":123,
                                "data":我所需的數(shù)據(jù)
                            }
                        ]
                    }
                ]
            }
        }
    );

有什么辦法能獲取到嗎?由于請求數(shù)比較多,所以暫時不考慮selenium.
有辦法能像js一樣操作這段數(shù)據(jù)嗎,例如a'uiConfig''items'這樣.
或者正則的話如何匹配呢?

回答
編輯回答
蝶戀花

如果你獲得的文本這么有規(guī)律的話,那就十分簡單了,正則都不需要,去掉第一行,去掉最后一行。然后 data = json.loads(content) ,在通過 data['uiConfig']['items'][0]['items'][0]['data'] 就能拿到了。

2017年4月28日 07:01
編輯回答
默念

說實話我沒怎么看懂需求,你是獲取到這段數(shù)據(jù),然后你需要這段數(shù)據(jù)中"data":我所需的數(shù)據(jù)這里的數(shù)據(jù)是嗎 ?
如果是的話你可以嘗試使用正則匹配出page_data后面類似的字典的一段數(shù)據(jù),匹配出來后嘗試使用 json.loads()把數(shù)據(jù)反序列化出來變成Python的字典,然后按照Python的字段取值方法取出你想要的內(nèi)容..

如果無法序列化可以嘗試直接使用正則匹配出來你需要的數(shù)據(jù) 正則記得使用非貪婪模式匹配

如果你是想執(zhí)行執(zhí)行js... em... 你這段數(shù)據(jù)不太像js 貌似沒辦法執(zhí)行吧..
想在Python執(zhí)行js可以百度下有第三方包可以解析執(zhí)行js代碼

2017年7月10日 06:28