scrapy 解析js代码或正则

用scrapy爬取某网站,数据由js生成,用xpath提取script,获取到如下:

define("page_data",
        {
            "uiConfig": {
                "type": "root",
                "items":[
                    {
                        "comid": "itemBasic",
                        "items":[
                            {
                                "id":123,
                                "data":我所需的数据
                            }
                        ]
                    }
                ]
            }
        }
    );

有什么办法能获取到吗?由于请求数比较多,所以暂时不考虑selenium.
有办法能像js一样操作这段数据吗,例如a'uiConfig''items'这样.
或者正则的话如何匹配呢?

阅读 3.7k
2 个回答

如果你获得的文本这么有规律的话,那就十分简单了,正则都不需要,去掉第一行,去掉最后一行。然后 data = json.loads(content) ,在通过 data['uiConfig']['items'][0]['items'][0]['data'] 就能拿到了。

说实话我没怎么看懂需求,你是获取到这段数据,然后你需要这段数据中"data":我所需的数据这里的数据是吗 ?
如果是的话你可以尝试使用正则匹配出page_data后面类似的字典的一段数据,匹配出来后尝试使用 json.loads()把数据反序列化出来变成Python的字典,然后按照Python的字段取值方法取出你想要的内容..

如果无法序列化可以尝试直接使用正则匹配出来你需要的数据 正则记得使用非贪婪模式匹配

如果你是想执行执行js... em... 你这段数据不太像js 貌似没办法执行吧..
想在Python执行js可以百度下有第三方包可以解析执行js代码

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题