首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用python解码json

用python解码json
EN

Stack Overflow用户
提问于 2013-12-24 23:32:36
回答 2查看 191关注 0票数 1

我对python并不熟悉,所以我在解码这个json脚本时遇到了一些困难。

代码语言:javascript
复制
import json
import mechanize

# Create a list of extensions and tehir page numbrs
extensions = {'com':'512','net':'55','co':'21','org':'62'}

# run a loop through the extension assosciative array
for (ext, pages) in extensions.items():
# set up arrays and future variables
visited_urls = []
found = 0
member = 0
not_found = 0
repeated_url = 0
added = 0
# Set the loop for page numbers
page_number = 1
while page_number <= 1:
    #set the target url
    target = "http://punkspider.hyperiongray.com/service/search/domain/? searchkey=url&searchvalue=."+ext+"&pagesize=10&pagenumber="+str(page_number)+"&filtertype=A ND&sqli=1"
    br = mechanize.Browser()
    html = br.open(target).read()
    json_data = json.loads(html)
    for (key, val) in json_data.items():
        print val['id']
    page_number +=1

目标只是一个json请求,页面根据搜索查询进行请求,这里是json。

代码语言:javascript
复制
{"data":{"numberOfPages":512,"domainSummaryDTOs":[{"id":"http://www.cdfdmy.com/","timestamp":"Tue May 14 12:59:28 GMT 2013","title":"【推荐】成都空压机|四川空压机|成都空气压缩机|四川空气压缩机|成都螺杆空压机|四川螺杆空压机|成都双螺杆空压机|四川双螺杆空压机|成都福道贸易有限公司","exploitabilityLevel":4,"bsqli":2,"sqli":2,"url":"http://www.cdfdmy.com/","xss":0},{"id":"http://www.chushijob.com/","timestamp":"Tue May 14 12:59:28 GMT 2013","title":"餐饮世界人才网-中国厨师人才网-中国酒店人才网","exploitabilityLevel":5,"bsqli":3,"sqli":2,"url":"http://www.chushijob.com/","xss":2},{"id":"http://www.hbenshi.com/","timestamp":"Tue May 14 12:59:28 GMT 2013","title":"恩施旅游网--恩施大峡谷 腾龙洞 利川 清江闯滩 土司城 欢迎您!","exploitabilityLevel":5,"bsqli":3,"sqli":4,"url":"http://www.hbenshi.com/","xss":1},{"id":"http://bbs.laiyb.com/","timestamp":"Mon Apr 29 03:30:09 GMT 2013","title":"莱阳论坛_莱阳吧_莱阳人的网络社区 -","exploitabilityLevel":4,"bsqli":4,"sqli":1,"url":"http://bbs.laiyb.com/","xss":0},{"id":"http://photostudio-town.com/","timestamp":"Mon Apr 29 03:30:09 GMT 2013","title":"フォトスタジオ・タウン-就職証明写真・お受験写真・オーディション写真-","exploitabilityLevel":5,"bsqli":1,"sqli":1,"url":"http://photostudio-town.com/","xss":1},{"id":"http://sp.sosfang.com/","timestamp":"Mon Apr 29 03:30:09 GMT 2013","title":"上海商铺出租/转让,上海门面房出租信息/上海门面转让-上海商铺网","exploitabilityLevel":2,"bsqli":0,"sqli":1,"url":"http://sp.sosfang.com/","xss":0},{"id":"http://www.msdssafe.com/","timestamp":"Sat Apr 06 11:03:33 GMT 2013","title":"MSDS查询网 英文MSDS查询网 MSDS MSDS报告 MSDS下载 msds是什么意思 MSDS安全网","exploitabilityLevel":4,"bsqli":15,"sqli":3,"url":"http://www.msdssafe.com/","xss":0},{"id":"http://www.tiananjidian.com/","timestamp":"Sat Apr 06 11:15:03 GMT 2013","title":"上海精工阀门厂总代理★上海精工阀门|上工牌阀门|精工阀门厂|上海阀门|精工阀门|广东阀门|广州阀门|惠州阀门|东莞阀门|佛山阀门|深圳阀门|中山阀门|潮州阀门|珠海阀门|河源阀门|汕头阀门|肇庆阀门|","exploitabilityLevel":3,"bsqli":0,"sqli":2,"url":"http://www.tiananjidian.com/","xss":1},{"id":"http://www.ywscocie.com/","timestamp":"Sat Apr 06 11:20:46 GMT 2013","title":"","exploitabilityLevel":2,"bsqli":0,"sqli":2,"url":"http://www.ywscocie.com/","xss":0},{"id":"http://bookingsbarbados.com/","timestamp":"Wed May 15 00:54:31 GMT 2013","title":"Bookings Caribbean | Barbados Bookings Center. Book barbados Hotels and Activities. Search, tourism ","exploitabilityLevel":5,"bsqli":4,"sqli":2,"url":"http://bookingsbarbados.com/","xss":18}],"rowsFound":5115,"qTime":1}}

我试图从json文件中获得'id‘键,它表示url,但是它给了我键'id’不存在的错误。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-12-24 23:35:28

实际上,唯一存在的顶级键是'data',与该键关联的值没有'id'键:

代码语言:javascript
复制
>>> json_data['data'].keys()
[u'numberOfPages', u'domainSummaryDTOs', u'rowsFound', u'qTime']

id键可以在字典的json_data['data']['domainSummaryDTOs']列表中找到:

代码语言:javascript
复制
for entry in json_data['data']['domainSummaryDTOs']:
    print entry['id']

演示:

代码语言:javascript
复制
>>> import json
>>> json_data = json.loads('''{"data":{"numberOfPages":512,"domainSummaryDTOs":[{"id":"http://www.cdfdmy.com/","timestamp":"Tue May 14 12:59:28 GMT 2013","title":"【推荐】成都空压机|四川空压机|成都空气压缩机|四川空气压缩机|成都螺杆空压机|四川螺杆空压机|成都双螺杆空压 机|四川双螺杆空压机|成都福道贸易有限公司","exploitabilityLevel":4,"bsqli":2,"sqli":2,"url":"http://www.cdfdmy.com/","xss":0},{"id":"http://www.chushijob.com/","timestamp":"Tue May 14 12:59:28 GMT 2013","title":"餐饮世界人才网-中国厨师人才网-中国酒店人才网","exploitabilityLevel":5,"bsqli":3,"sqli":2,"url":"http://www.chushijob.com/","xss":2},{"id":"http://www.hbenshi.com/","timestamp":"Tue May 14 12:59:28 GMT 2013","title":"恩施旅游网--恩施大峡谷 腾龙洞 利川 清江闯滩 土司城 欢迎您!","exploitabilityLevel":5,"bsqli":3,"sqli":4,"url":"http://www.hbenshi.com/","xss":1},{"id":"http://bbs.laiyb.com/","timestamp":"Mon Apr 29 03:30:09 GMT 2013","title":"莱阳论坛_莱阳吧_莱阳人的网络社区 -","exploitabilityLevel":4,"bsqli":4,"sqli":1,"url":"http://bbs.laiyb.com/","xss":0},{"id":"http://photostudio-town.com/","timestamp":"Mon Apr 29 03:30:09 GMT 2013","title":"フォトスタジオ・タウン-就職証明写真・お受験写真・オーディション写真-","exploitabilityLevel":5,"bsqli":1,"sqli":1,"url":"http://photostudio-town.com/","xss":1},{"id":"http://sp.sosfang.com/","timestamp":"Mon Apr 29 03:30:09 GMT 2013","title":"上海商铺出租/转让,上海门面房出租信息/上海门面转让-上海商铺网","exploitabilityLevel":2,"bsqli":0,"sqli":1,"url":"http://sp.sosfang.com/","xss":0},{"id":"http://www.msdssafe.com/","timestamp":"Sat Apr 06 11:03:33 GMT 2013","title":"MSDS查 询网 英文MSDS查询网 MSDS MSDS报告 MSDS下载 msds是什么意思 MSDS安全网","exploitabilityLevel":4,"bsqli":15,"sqli":3,"url":"http://www.msdssafe.com/","xss":0},{"id":"http://www.tiananjidian.com/","timestamp":"Sat Apr 06 11:15:03 GMT 2013","title":"上海精工阀门厂总代理★上海精工阀门|上工牌阀门|精工阀门厂|上海阀门|精工阀门|广东阀门|广州阀门|惠州阀门|东莞阀门|佛山阀门|深圳阀门|中山阀门|潮州阀门|珠海阀门|河源阀门|汕头阀门|肇庆阀门|","exploitabilityLevel":3,"bsqli":0,"sqli":2,"url":"http://www.tiananjidian.com/","xss":1},{"id":"http://www.ywscocie.com/","timestamp":"Sat Apr 06 11:20:46 GMT 2013","title":"","exploitabilityLevel":2,"bsqli":0,"sqli":2,"url":"http://www.ywscocie.com/","xss":0},{"id":"http://bookingsbarbados.com/","timestamp":"Wed May 15 00:54:31 GMT 2013","title":"Bookings Caribbean | Barbados Bookings Center. Book barbados Hotels and Activities. Search, tourism ","exploitabilityLevel":5,"bsqli":4,"sqli":2,"url":"http://bookingsbarbados.com/","xss":18}],"rowsFound":5115,"qTime":1}}
... ''')
>>> for entry in json_data['data']['domainSummaryDTOs']:
...     print entry['id']
... 
http://www.cdfdmy.com/
http://www.chushijob.com/
http://www.hbenshi.com/
http://bbs.laiyb.com/
http://photostudio-town.com/
http://sp.sosfang.com/
http://www.msdssafe.com/
http://www.tiananjidian.com/
http://www.ywscocie.com/
http://bookingsbarbados.com/

它通常有助于首先将JSON美化为更易读的树。您可以使用联机JSONLint服务,也可以将python json模块用作文件上的命令行:

代码语言:javascript
复制
python -m json.tool filename.json

对于您的输入,JSONLint生成:

代码语言:javascript
复制
{
    "data": {
        "numberOfPages": 512,
        "domainSummaryDTOs": [
            {
                "id": "http://www.cdfdmy.com/",
                "timestamp": "Tue May 14 12:59:28 GMT 2013",
                "title": "【推荐】成都空压机|四川空压机|成都空气压缩机|四川空气压缩机|成都螺杆空压机|四川螺杆空压机|成都双螺杆空压机|四川双螺杆空压机|成都福道贸易有限公司",
                "exploitabilityLevel": 4,
                "bsqli": 2,
                "sqli": 2,
                "url": "http://www.cdfdmy.com/",
                "xss": 0
            },
            {
                "id": "http://www.chushijob.com/",
                "timestamp": "Tue May 14 12:59:28 GMT 2013",
                "title": "餐饮世界人才网-中国厨师人才网-中国酒店人才网",
                "exploitabilityLevel": 5,
                "bsqli": 3,
                "sqli": 2,
                "url": "http://www.chushijob.com/",
                "xss": 2
            },
            {
                "id": "http://www.hbenshi.com/",
                "timestamp": "Tue May 14 12:59:28 GMT 2013",
                "title": "恩施旅游网--恩施大峡谷 腾龙洞 利川 清江闯滩 土司城 欢迎您!",
                "exploitabilityLevel": 5,
                "bsqli": 3,
                "sqli": 4,
                "url": "http://www.hbenshi.com/",
                "xss": 1
            },
            {
                "id": "http://bbs.laiyb.com/",
                "timestamp": "Mon Apr 29 03:30:09 GMT 2013",
                "title": "莱阳论坛_莱阳吧_莱阳人的网络社区 -",
                "exploitabilityLevel": 4,
                "bsqli": 4,
                "sqli": 1,
                "url": "http://bbs.laiyb.com/",
                "xss": 0
            },
            {
                "id": "http://photostudio-town.com/",
                "timestamp": "Mon Apr 29 03:30:09 GMT 2013",
                "title": "フォトスタジオ・タウン-就職証明写真・お受験写真・オーディション写真-",
                "exploitabilityLevel": 5,
                "bsqli": 1,
                "sqli": 1,
                "url": "http://photostudio-town.com/",
                "xss": 1
            },
            {
                "id": "http://sp.sosfang.com/",
                "timestamp": "Mon Apr 29 03:30:09 GMT 2013",
                "title": "上海商铺出租/转让,上海门面房出租信息/上海门面转让-上海商铺网",
                "exploitabilityLevel": 2,
                "bsqli": 0,
                "sqli": 1,
                "url": "http://sp.sosfang.com/",
                "xss": 0
            },
            {
                "id": "http://www.msdssafe.com/",
                "timestamp": "Sat Apr 06 11:03:33 GMT 2013",
                "title": "MSDS查询网 英文MSDS查询网 MSDS MSDS报告 MSDS下载 msds是什么意思 MSDS安全网",
                "exploitabilityLevel": 4,
                "bsqli": 15,
                "sqli": 3,
                "url": "http://www.msdssafe.com/",
                "xss": 0
            },
            {
                "id": "http://www.tiananjidian.com/",
                "timestamp": "Sat Apr 06 11:15:03 GMT 2013",
                "title": "上海精工阀门厂总代理★上海精工阀门|上工牌阀门|精工阀门厂|上海阀门|精工阀门|广东阀门|广州阀门|惠州阀门|东莞阀门|佛山阀门|深圳阀门|中山阀门|潮州阀门|珠海阀门|河源阀门|汕头阀门|肇庆阀门|",
                "exploitabilityLevel": 3,
                "bsqli": 0,
                "sqli": 2,
                "url": "http://www.tiananjidian.com/",
                "xss": 1
            },
            {
                "id": "http://www.ywscocie.com/",
                "timestamp": "Sat Apr 06 11:20:46 GMT 2013",
                "title": "",
                "exploitabilityLevel": 2,
                "bsqli": 0,
                "sqli": 2,
                "url": "http://www.ywscocie.com/",
                "xss": 0
            },
            {
                "id": "http://bookingsbarbados.com/",
                "timestamp": "Wed May 15 00:54:31 GMT 2013",
                "title": "Bookings Caribbean | Barbados Bookings Center. Book barbados Hotels and Activities. Search, tourism ",
                "exploitabilityLevel": 5,
                "bsqli": 4,
                "sqli": 2,
                "url": "http://bookingsbarbados.com/",
                "xss": 18
            }
        ],
        "rowsFound": 5115,
        "qTime": 1
    }
}

这也许更容易猜出来。

票数 3
EN

Stack Overflow用户

发布于 2013-12-24 23:36:05

您的"id“元素在domainSummaryDTOs中的列表中。

代码语言:javascript
复制
print json_data['data']['domainSummaryDTOs'][0]['id'];

...will为您提供了第一个元素,您需要修复您的循环以遵循该结构:

代码语言:javascript
复制
for item in json_data['data']['domainSummaryDTOs']:
    print item['id']
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20767777

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档