Python 从json字典打印多个网页项

Python 从json字典打印多个网页项,python,json,scrapy,Python,Json,Scrapy,我在Windows Vista 64位上使用Python.org 2.7 64位版本。我有以下代码,用于从代码中引用的页面的HTML中嵌入的javascript“Datastore.prime”项中提取数据: from scrapy.spider import Spider from scrapy.selector import Selector from scrapy.utils.markup import remove_tags from scrapy.cmdline import exec

我在Windows Vista 64位上使用Python.org 2.7 64位版本。我有以下代码,用于从代码中引用的页面的HTML中嵌入的javascript“Datastore.prime”项中提取数据:

from scrapy.spider import Spider
from scrapy.selector import Selector
from scrapy.utils.markup import remove_tags
from scrapy.cmdline import execute
import csv
import re
import json

filepath = "C:\\Python27\\Football Data\\test" + ".txt"

with open(filepath, "w") as f:
    f.write("")
    f.close()

class MySpider(Spider):

    name = "goal2"
    allowed_domains = ["whoscored.com"]
    start_urls = ["http://www.whoscored.com/Teams/705/Archive/Israel-Maccabi-Haifa"]      

    def parse(self, response):

        playerdata = re.search(re.escape("DataStore.prime('stage-player-stat', defaultTeamPlayerStatsConfigParams.defaultParams , ") + '(\[.*\])' + re.escape(");"), response.body).group(1)

        for player in json.loads(playerdata):
            print player['FirstName']
这非常有效,并在页面的主表中列出了所有玩家的名字。但是,当我试图通过将print语句修改为“print['FirstName','LastName'”,从数据存储中打印多个字段(如“FirstName”和“LastName”)时,出现以下错误:

    print player['FirstName', 'LastName']
 exceptions.KeyError: ('FirstName', 'LastName')
有人能告诉我为什么这不起作用,以及我如何修改代码以从Datastore.prime返回多个数据字段吗


谢谢

当您评估
播放器['FirstName','LastName']
时,Python尝试将
('FirstName','LastName')
转换为元组并将其用作索引。但是从
json.loads
返回的dict没有元组作为索引。因此,您需要分别查找每个字段,并将它们连接在一起

# simulate loading playerdata
players = [
    {'FirstName': 'Podge', 'LastName': 'Hasglow'},
    {'FirstName': 'Milo', 'LastName': 'Holloway'},
    {'FirstName': 'Staisy', 'LastName': 'Beccasdaughter'},
]
# or in your case:
##players = json.loads(playerdata)
# now print them all
for player in players:
    player_fullname = ' '.join(player[colname] for colname in ['FirstName', 'LastName'])
    print(player_fullname)

嗨,谢谢你的回复。如果您使用了模拟负载的方法,我应该为实际负载使用什么语法?我现在有相同的正则表达式吗?用相同的正则表达式尝试
players=json.loads(playerdata)