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
感謝您的幫助!
我必須承認你應該得到我的讚賞。 –