我正在研究一个项目,以从各种服务中的幻想足球联赛中统计数据,雅虎是我目前卡住的那个。我希望我的蜘蛛抓取雅虎公开赛的选秀结果页面。当我运行蜘蛛时,它没有给我任何结果,也没有错误信息。它只是说: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
真的很感激任何有关这方面的见解。
1.重写'start_requests'而不是填写'start_urls'; 2.调试你的代码。把一些打印按照逻辑:它是否到达'parse'方法? xpath查询是否工作? – warvariuc
1.尝试'scrapy shell'检查XPath选择器是否工作。 2.使用'CrawlSpider'和自定义的'parse'方法是没有意义的,因为CrawlSpider有它自己的'parse'定义。 'BaseSpider'会更合适。 3.另外,它可能只是缩进,但是看起来好像你在'for'循环中定义了'parse'方法,并在每次迭代中覆盖它。 –