2017-11-25 161 views
0

我想要遵循链接列表和每个链接的废料数据与一个简单的scrapy蜘蛛,但我有麻烦。Scrapy下面的链接没有获取数据

在scrapy shell中,当我重新创建脚本时,它发送新url的get请求,但是当我运行爬网时,我没有从链接中获取任何数据。我找回的唯一数据来自在链接前被抓到的起始网址。

如何从链接中抓取数据?

import scrapy 

    class QuotesSpider(scrapy.Spider): 
     name = "players" 
     start_urls = ['http://wiki.teamliquid.net/counterstrike/Portal:Teams'] 

     def parse(self, response): 
      teams = response.xpath('//*[@id="mw-content-text"]/table[1]') 
      for team in teams.css('span.team-template-text'): 
       yield{ 
        'teamName': team.css('a::text').extract_first() 
       } 


      urls = teams.css('span.team-template-text a::attr(href)') 
      for url in urls: 
       url = response.urljoin(url) 
       yield scrapy.Request(url, callback=self.parse_team_info) 


     def parse_team_info(self, response): 
       yield{ 
        'Test': response.css('span::text').extract_first() 
       } 
+0

始终使用标签'python' - 它突出的代码,使更具可读性。 – furas

+0

使用'print()'显示变量中的值以及代码的哪一部分被执行 - 它有助于发现问题。 – furas

回答

2

而不是使用

url = response.urljoin(url) 
yield scrapy.Request(url, callback=self.parse_team_info) 

使用

yield response.follow(url, callback=self.parse_team_info)