【发布时间】:2014-07-31 18:04:41
【问题描述】:
我在 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 ['FirstName', 'LastName'] 来打印数据存储区中的多个字段(例如 'FirstName' 和 'LastName' 时,会出现错误:
print player['FirstName', 'LastName']
exceptions.KeyError: ('FirstName', 'LastName')
谁能告诉我为什么这不起作用以及如何修改代码以从 Datastore.prime 返回多个数据字段?
谢谢
【问题讨论】: