2012-09-15 26 views
0

我正在研究一个项目,以从各种服务中的幻想足球联赛中统计数据,雅虎是我目前卡住的那个。我希望我的蜘蛛抓取雅虎公开赛的选秀结果页面。当我运行蜘蛛时,它没有给我任何结果,也没有错误信息。它只是说:Python Scrapy: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: 
    {} 

这不是一个登录的问题,因为有问题的页面是没有签字访问我在这里公布,人们已经得到了擦伤,为雅虎的其他地区工作的其他问题,请参阅。雅虎幻想有可能阻止蜘蛛吗?我已经成功为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 

真的很感激任何有关这方面的见解。

+0

1.重写'start_requests'而不是填写'start_urls'; 2.调试你的代码。把一些打印按照逻辑:它是否到达'parse'方法? xpath查询是否工作? – warvariuc

+0

1.尝试'scrapy shell '检查XPath选择器是否工作。 2.使用'CrawlSpider'和自定义的'parse'方法是没有意义的,因为CrawlSpider有它自己的'parse'定义。 'BaseSpider'会更合适。 3.另外,它可能只是缩进,但是看起来好像你在'for'循环中定义了'parse'方法,并在每次迭代中覆盖它。 –

回答

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 /体/ DIV/DIV/DIV/DIV/DIV/DIV/DIV /表/ TR”

以及我永远不会推荐您可以使用绝对路径的XPath,但你应该使用一些相关的XPath像所有的结果都在

//div[@id='drafttables'] 

这个div。所以你可以开始得到结果。

+0

谢谢,相对Xpaths ftw! – ckz

相关问题