hahawangzi 发表于 2020-5-12 15:21

python关于json处理字典数据问题

import json
#--------------------------------------------------

url='https://support.microsoft.com/zh-cn/help/4529964/windows-10-update-history'
headers={
         'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36',
         #'Referer':"https://www.manhuadb.com/author/370"
         
      }
web = requests.get(url,headers=headers)
web.encoding='utf-8'
pan = re.compile('"minorVersions": (.*?)]',re.S)
soup = BeautifulSoup(web.text,'lxml')
dav = soup.find_all('script',type="text/javascript")
for i in dav:
      s_raw = re.findall(pan, str(i))
      if len(s_raw) > 0:
            s = re.sub('\r\n\s*','',s_raw)[:-1]
            #print(s)
            res2=json.dumps(s)
            
            print(json.loads(res2))
            for j in json.loads(res2):
                print(j["heading"])

想用json来处理这段 匹配出来的数据,
我用了json.loads(res2)转换成字典后,还是无法通过键来获取值,是不是我哪里出错了,一运行就报错,求各位帮忙看看哪里有问题

带色的小马甲 发表于 2020-5-12 15:46

把你pan的正则方括号写到括号里面去

hahawangzi 发表于 2020-5-12 15:52

带色的小马甲 发表于 2020-5-12 15:46
把你pan的正则方括号写到括号里面去

不懂??????????????写到哪里去呢?????????????????????

带色的小马甲 发表于 2020-5-12 15:53

hahawangzi 发表于 2020-5-12 15:52
不懂??????????????写到哪里去呢?????????????????????

pan = re.compile('"minorVersions": (.*?\])',re.S)

zdnyp 发表于 2020-5-12 16:01

学一下怎么贴代码

hahawangzi 发表于 2020-5-12 16:09

带色的小马甲 发表于 2020-5-12 15:53
pan = re.compile('"minorVersions": (.*?\])',re.S)

json怎么把加载匹配后的内容,转换成字典,然后在进行字典搜索啊比如 print(j["id"])这样
我这个pan 已经匹配过了呀

麦田孤望者 发表于 2020-5-12 16:12

你那个图有一行没截上
还有看一看中括号和大括号是不是一一对应

hahawangzi 发表于 2020-5-12 16:23

麦田孤望者 发表于 2020-5-12 16:12
你那个图有一行没截上
还有看一看中括号和大括号是不是一一对应

[{"id": "4550945","locale": "zh-hans","heading": "2020 年 4 月 21 日 - KB4550945(操作系统内部版本 18362.815 和 18363.815)","releaseDate": "2020-04-21T00:00:00","releaseVersion": "1903-OS Build 18362.815 and 1909-OS Build 18363.815"},{"id": "4549951","locale": "zh-hans","heading": "2020 年 4 月 14 日 - KB4549951(操作系统内部版本 18362.778 和 18363.778)","releaseDate": "2020-04-14T00:00:00","releaseVersion": "1903-OS Build 18362.778 and 1909-OS Build 18363.778"},{"id": "4554364","locale": "zh-hans","heading": "2020 年 3 月 30 日 - KB4554364(操作系统内部版本 18362.753 和 18363.753)","releaseDate": "2020-03-30T00:00:00","releaseVersion": "1903-OS Build 18362.753 and 1909-OS Build 18363.753"},{"id": "4541335","locale": "zh-hans","heading": "2020 年 3 月 24 日 - KB4541335(操作系统内部版本 18362.752 和 18363.752)","releaseDate": "2020-03-24T00:00:00","releaseVersion": "1903-OS Build 18362.752 and 1909-OS Build 18363.752"},{"id": "4551762","locale": "zh-hans","heading": "2020 年 3 月 12 日 - KB4551762(操作系统内部版本 18362.720 和 18363.720)","releaseDate": "2020-03-12T00:00:00","releaseVersion": "1903-OS Build 18362.720 and 1909-OS Build 18363.720"},{"id": "4540673","locale": "zh-hans","heading": "2020 年 3 月 10 日 - KB4540673(操作系统内部版本 18362.719 和 18363.719)","releaseDate": "2020-03-10T00:00:00","releaseVersion": "1903-OS Build 18362.719 and 1909-OS Build 18363.719"},{"id": "4535996","locale": "zh-hans","heading": "2020 年 2 月 27 日 - KB4535996(操作系统内部版本 18362.693 和 18363.693)","releaseDate": "2020-02-27T00:00:00","releaseVersion": "1903-OS Build 18362.693 and 1909-OS Build 18363.693"},{"id": "4532693","locale": "zh-hans","heading": "2020 年 2 月 11 日 - KB4532693(操作系统内部版本 18362.657 和 18363.657)","releaseDate": "2020-02-11T00:00:00","releaseVersion": "1903-OS Build 18362.657 and 1909-OS Build 18363.657"},{"id": "4532695","locale": "zh-hans","heading": "2020 年 1 月 28 日 - KB4532695(操作系统内部版本 18362.628 和 18363.628)","releaseDate": "2020-01-28T00:00:00","releaseVersion": "1903-OS Build 18362.628 and 1909-OS Build 18363.628"},{"id": "4528760","locale": "zh-hans","heading": "2020 年 1 月 14 日 - KB4528760(操作系统内部版本 18362.592 和 18363.592)","releaseDate": "2020-01-14T00:00:00","releaseVersion": "1903-OS Build 18362.592 and 1909-OS Build 18363.592"},{"id": "4530684","locale": "zh-hans","heading": "2019 年 12 月 10 日 - KB4530684(操作系统内部版本 18362.535 和 18363.535)","releaseDate": "2019-12-10T00:00:00","releaseVersion": "1903-OS Build 18362.535 and 1909-OS Build 18363.535"},{"id": "4524570","locale": "zh-hans","heading": "2019 年 11 月 12 日 - KB4524570(操作系统内部版本 18362.476 和 18363.476)","releaseDate": "2019-11-12T00:00:00","releaseVersion": "1903-OS Build 18362.476 and 1909-OS Build 18363.476"

hahawangzi 发表于 2020-5-12 16:24

如何用json转换成字典用呢????????? 以前没用过json

井右寺 发表于 2020-5-12 16:33

:eee
import json
newdict = json.loads(rawdata)
页: [1] 2 3
查看完整版本: python关于json处理字典数据问题