2017-11-25 6 views
0

간단한 링크를 사용하여 각 링크의 링크 목록과 데이터를 스크랩하려고하는데 문제가 있습니다.링크가 데이터를 가져 오지 못하는 경우

스크립트를 다시 만들면 새 URL을 가져 오는 요청을 보내지 만 크롤링을 실행하면 링크에서 데이터가 다시 반환되지 않습니다. 내가 얻은 유일한 데이터는 링크로 가기 전에 긁힌 시작 URL에서 가져온 것입니다.

링크에서 데이터를 긁어 내려면 어떻게해야합니까? 대신

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

사용을 사용

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

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