0
扩大之前总结一下我的几个要点查询:Scrapy:自动填充提取的字段
- 目标网站是一个体育网站,我想凑100+领域。
- 我想声明一个空的类来填充字段名称并填充相关的值。
- 我不清楚你如何改变项目文件的情况下,你没有明确声明你的scraped项目。
现在要下定决心。我想找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)
基于上述,可能有人帮助我搞清楚我应该结构中的项目文件
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
感谢您的帮助!
我必须承认你应该得到我的赞赏。 –