在扩展之前,在几个要点中总结我的查询:
现在开始讨论。
我希望从a rugby database中抽身。代码片段如下:
<TeamData Possession="0.50" Score="40" Side="Home" TeamRef="t1550" Territory="0">
<Stat Type="restart_opp_player">0</Stat>
<Stat Type="kick_oppn_collection">0</Stat>
<Stat Type="kicks_from_hand">0</Stat>
<Stat Type="penalty_conceded_killing_ruck">0</Stat>
...
此代码继续大约另外140行,以便明确定义每个属性。
我希望能够定义一个空类,然后用各种属性填充它,而不是逐个提取每个属性。这在shell中很容易实现。
class RugbyItem(params):
def __init__(self, params)
selc.__dict__.update(params)
home_attribute_names = response.xpath('//TeamData[@Side="Home"]/Stat/@Type').extract()
home_attribute_stats = response.xpath('//TeamData[@Side="Home"]/Stat/text()').extract()
concat = {k: v for (k, v) in (zip(home_names, home_stats))}
home_data = RugbyItem(concat)
基于以上所述,有人可以帮我弄清楚我应该以什么方式构建Items文件
class RugbyItem(scrapy.Item):
??? = scrapy.Field()
和蜘蛛类。
class MySpider(BaseSpider):
name = "rugbyspider"
allowed_domains = ["opta.net"]
start_urls = ["http://omo.akamai.opta.net/?feed_type=ruf9&game_id=113013&user=OWV3&psw=trDd59TW"]
def parse(self, response):
home_attribute_names = response.xpath('//TeamData[@Side="Home"]/Stat/@Type').extract()
home_attribute_stats = response.xpath('//TeamData[@Side="Home"]/Stat/text()').extract()
concat = {k: v for (k, v) in (zip(home_names, home_stats))}
home_data = RugbyItem(concat)
yield home_data
感谢您的帮助!
答案 0 :(得分:0)
您没有义务提供scrapy.Item
个实例,您也可以获得dict
,但不会受到您想要的限制。