このサイトをスクレイピングしようとしています: http://stats.swehockey.se/ScheduleAndResults/Schedule/3940
そして、(alecxe のおかげで) 日付とチームを取得することができました。
from scrapy.item import Item, Field
from scrapy.spider import BaseSpider
from scrapy.selector import HtmlXPathSelector
class SchemaItem(Item):
date = Field()
teams = Field()
class SchemaSpider(BaseSpider):
name = "schema"
allowed_domains = ["http://stats.swehockey.se/"]
start_urls = [
"http://stats.swehockey.se/ScheduleAndResults/Schedule/3940"
]
def parse(self, response):
hxs = HtmlXPathSelector(response)
rows = hxs.select('//table[@class="tblContent"]/tr')
for row in rows:
item = SchemaItem()
item['date'] = row.select('.//td[2]/div/span/text()').extract()
item['teams'] = row.select('.//td[3]/text()').extract()
yield item
そこで、私の次のステップは、「AIK」または「ユールゴーデン IF」のホーム ゲームではないものを除外することです。その後、Google カレンダーに追加できる .ics ファイルに再フォーマットする必要があります。
編集:だから私はいくつかのことを解決しましたが、まだやるべきことがたくさんあります。私のコードは今このようになります..
# -*- coding: UTF-8 -*-
from scrapy.item import Item, Field
from scrapy.spider import BaseSpider
from scrapy.selector import HtmlXPathSelector
class SchemaItem(Item):
date = Field()
teams = Field()
class SchemaSpider(BaseSpider):
name = "schema"
allowed_domains = ["http://stats.swehockey.se/"]
start_urls = [
"http://stats.swehockey.se/ScheduleAndResults/Schedule/3940"
]
def parse(self, response):
hxs = HtmlXPathSelector(response)
rows = hxs.select('//table[@class="tblContent"]/tr')
for row in rows:
item = SchemaItem()
item['date'] = row.select('.//td[2]/div/span/text()').extract()
item['teams'] = row.select('.//td[3]/text()').extract()
for string in item['teams']:
teams = string.split('-') #split it
home_team = teams[0]#.split(' ') #only the first name, e.g. just 'Djurgårdens' out of 'Djurgårdens IF'
away_team = teams[1]
#home_team[0] = home_team[0].replace(" ", "") #remove whitespace
#home_team = home_team[0]
if "AIK" in home_team:
for string in item['date']:
year = string[0:4]
month = string[5:7]
day = string[8:10]
hour = string[11:13]
minute = string[14:16]
print year, month, day, hour, minute, home_team, away_team
elif u"Djurgårdens" in home_team:
for string in item['date']:
year = string[0:4]
month = string[5:7]
day = string[8:10]
hour = string[11:13]
minute = string[14:16]
print year, month, day, hour, minute, home_team, away_team
そのコードは、「AIK」、「Djurgårdens IF」、および「Skellefteå AIK」のゲームを出力します。したがって、ここでの私の問題は明らかに、「Skellefteå AIK」ゲームを除外する方法と、このプログラムを改善する簡単な方法があるかどうかです。これについての考えは?
よろしくお願いします!