2014-10-20 126 views
0

我想从网址列表中抓取一些数据,例如http://basketball.realgm.com/international/league/12/French-LNB-Pro-A/teams来拉取所有的团队名称。下面是我的蜘蛛,它通过网址运行,但没有获取任何数据?Scrapy没有输出

from scrapy.spider import Spider 
from scrapy.selector import HtmlXPathSelector 
from teams.items import TeamsItem 

class TeamsSpider(Spider): 
    name = "teamcrawler" 
    allowed_domains = ["basketball.realgm.com"] 
    f = open("teamurls.txt") 
    start_urls = [url.strip() for url in f.readlines()] 

    def parse(self, response): 
     hxs = HtmlXPathSelector(response) 
     titles = hxs.select("/html/body/div[1]/div[2]/table/tbody/tr/td/div[2]/table/tbody/tr") 
     items = [] 
     for title in titles: 
      item = TeamsItem() 
      item["URL"] = title.select("td[1]/a/@href").extract() 
      item["Team"] = title.select("td[1]/a/text()").extract() 
      items.append(item) 
     print items 
     return items 

回答

0

你的XPath是因为在XPath的tbody的失败。浏览器(如Firefox和Chrome)会将该节点添加到表中,如果该节点不存在于页面的源中。

由于tbody节点可能或可能不在页面的源代码中,因此可以使用scrapy外壳程序与scrapy所看到的进行交互式调试。用法:scrapy shell 'http://www.example.org'

相关问题:Parsing HTML with XPath, Python and Scrapy