0

私はさまざまなサービスでファンタジー フットボール リーグから統計を収集するプロジェクトに取り組んでおり、現在 Yahoo に行き詰まっています。公開されている Yahoo リーグのドラフト結果ページをクロールするスパイダーが必要です。スパイダーを実行すると、結果が表示されず、エラー メッセージも表示されません。それは単に言う:

2012-09-14 17:29:08-0700 [draft] DEBUG: Crawled (200) <GET http://football.fantasysports.yahoo.com/f1/753697/draftresults?drafttab=round> (referer: None)
2012-09-14 17:29:08-0700 [draft] INFO: Closing spider (finished)
2012-09-14 17:29:08-0700 [draft] INFO: Dumping spider stats:
    {'downloader/request_bytes': 250,
     'downloader/request_count': 1,
     'downloader/request_method_count/GET': 1,
     'downloader/response_bytes': 48785,
     'downloader/response_count': 1,
     'downloader/response_status_count/200': 1,
     'finish_reason': 'finished',
     'finish_time': datetime.datetime(2012, 9, 15, 0, 29, 8, 734000),
     'scheduler/memory_enqueued': 1,
     'start_time': datetime.datetime(2012, 9, 15, 0, 29, 7, 718000)}
2012-09-14 17:29:08-0700 [draft] INFO: Spider closed (finished)
2012-09-14 17:29:08-0700 [scrapy] INFO: Dumping global stats:
    {}

問題のページはサインインしなくてもアクセスできるため、ログインの問題ではありません。ここに投稿された他の質問から、Yahoo の他の部分で働くためにスクレイプを得ていることがわかります。Yahoo Fantasy がスパイダーをブロックしている可能性はありますか? 私はすでに ESPN 用のスクリプトを正常に作成しているので、問題は私のコードにあるとは思いません。とにかくここにあります:

class DraftSpider(CrawlSpider):
name = "draft"
#psycopg stuff here

rows = ["753697"]

allowed_domains = ["football.fantasysports.yahoo.com"]

start_urls = []

for row in rows:

    start_urls.append("http://football.fantasysports.yahoo.com/f1/" + "%s" % (row) + "/draftresults?drafttab=round")

    def parse(self, response):
        hxs = HtmlXPathSelector(response)
        sites = hxs.select("/html/body/div/div/div/div/div/div/div/table/tr")
        items = []
        for site in sites:
            item = DraftItem()
            item['pick_number'] = site.select("td[@class='first']/text()").extract()
            item['pick_player'] = site.select("td[@class='player']/a/text()").extract()
            item['pick_nflteam'] = site.select("td[@class='player']/span/text()").extract()
            item['pick_ffteam'] = site.select("td[@class='last']/@title").extract()
            items.append(item)
        return items

これについての洞察を本当に感謝します。

4

1 に答える 1

1
C:\Users\Akhter Wahab>scrapy shell http://football.fantasysports.yahoo.com/f1/75
In [1]: hxs.select("/html/body/div/div/div/div/div/div/div/table/tr")
Out[1]: []

あなたの絶対Xpathは正しくありません "/html/body/div/div/div/div/div/div/div/table/tr"

同様に、絶対 Xpath を使用することは決してお勧めしませんが、すべての結果が含まれているように、相対 Xpath を使用する必要があります。

//div[@id='drafttables']

このdiv。結果を出し始めることができます。

于 2012-09-17T08:07:25.913 に答える