——demjson目标链接演示链接http://fcd.5173.com/commondat...请求上面的链接,会得到如下图对于一个js文件,我们需要把这个js文件转成dict,方便提取需要的字段(这在爬虫任务中很常见)。失败的方法传统的方法通常是将一个js文件转成一个dict:1.先通过切片的方式切掉头部去掉尾部,去掉头部的“callarea(”和末尾的“)”。2.再次导入json库,使用loads,json.loads(resposne.text[9:-1])将json转dict。但是,这种方法在这里不起作用。导入请求importjsonurl='http://fcd.5173.com/commondata/Category.aspx?type=area&cache=&id=20c8bbc1b9794fc98bd96859624d4769&jsoncallback=callarea'headers={'User-Agent':'Mozilla/5.0(WindowsNT14.0;Win60.0;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/76.0.3809.87Safari/537.36',}resposne=requests.get(url,headers=headers)print(json.loads(resposne.text[9:-1]))错误原因是js文件不一定是json的超集。这里js文件的key不包含双引号,value中的内容是单引号。appeal方法有效的前提是js需要是json的超集,key和value用双引号括起来。demjson没有无双之路。importrequestsimportdemjsonurl='http://fcd.5173.com/commondata/Category.aspx?type=area&cache=&id=20c8bbc1b9794fc98bd96859624d4769&jsoncallback=callarea'headers={'User-Agent':'Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/76.0.3809.87Safari/537.36',}resposne=requests.get(url,headers=headers)foritemindemjson.decode(resposne.text[9:-1)]):id=item.get('id')name=item.get('name')print(id,name)得到如下结果,写代码别睡着了
