0

json ディクショナリと配列を理解するのに問題があります。Web サイトから情報をスクレイピングするスクリプトがあります。

models.txt は、次のようなモデル番号の単なるリストです。

30373
30374
30375

json_descriptions.txt は、必要なキーのリストです

sku
price
listprice
issoldout

コードは次のとおりです。

import urllib
import re
import json

modelslist = open("models.txt").read()
modelslist = modelslist.split("\n")
descriptionlist = open("json_descriptions.txt").read()
descriptionlist = descriptionlist.split("\n")

for model in modelslist:
    htmltext = urllib.urlopen("http://dx.com/p/GetProductInfoRealTime?skus="+model)
    htmltext = json.load(htmltext)
    if htmltext['success'] == True:
        def get_data(dict_index, key):
            return htmltext[u"data"][dict_index][key]
        for description in descriptionlist:
           info = description, (get_data(0,description))
           print info
    else:
       print "product does not exist"

情報を印刷すると、次のようになります。

sku 30373
price 9.10
listprice 17.62
issoldout False

つまり、info[0] は次のようになります。

sku
price
listprice
issoldout

および情報[1]は次のとおりです。

30373
9.10
17.62
False

これを行う方法があるかどうか知りたいです: ループ 1 =['sku','30373','price','4.90','listprice','0','issoldout','False'] ループ 2 =['sku','30374','price','10.50','listprice','0','issoldout','False']

info[0] = sku info[1] = 30373 info[2] = price info[3] = 4.90 info[4] = listprice info[5] = 0 info[6] = issoldout info[7] = Falseそして、次のループスルーのために新しいリストでそれを繰り返します。

私は使ってみましたが、それinfo = json.dumps(info)はただ与えるだけですinfo[0] = [[[[info[1] = """" info[2] = spli

4

1 に答える 1

1

このような?

info = []
for model in modelslist:
    htmltext = urllib.urlopen("http://dx.com/p/GetProductInfoRealTime?skus="+model)
    htmltext = json.load(htmltext)
    if htmltext['success'] == True:
        def get_data(dict_index, key):
            return htmltext[u"data"][dict_index][key]
        for description in descriptionlist:
            info.append(description)
            info.append(get_data(0,description))
print info
于 2013-04-09T03:16:41.443 に答える