2016-07-15 65 views
0

我使用Scrapy 1.1.0和Python 3.5從網站上抓取數據。 下面的代碼工作...scrapy當dont_filter = False時,請求回調不起作用

class ImdbSpider(scrapy.Spider): 
    name = "imdbFav" 
    allowed_domains = ["http://www.imdb.com"] 
    start_urls = [ 
     "http://www.imdb.com/title/tt0203166/" 
    ] 
    recommendRegex = re.compile(r'\/title\/([A-Za-z0-9]*)') 

    def parse(self, response): 
     for recommend in response.xpath('//div[@class="rec_page"]/div[@class="rec_item"]/a/@href').extract(): 
      mo = self.recommendRegex.search(recommend) 
      recommendId = mo.group(1) 
      link = "http://www.imdb.com/title/" + recommendId 
      print(link) 
      yield scrapy.Request(link, callback=self.parse, dont_filter=True) 
enter code here 

但是...我不知道爲什麼請求回調不叫,如果dont_filter =假。 該文檔說:

這是用來當你想多次執行相同的請求,忽略重複過濾器。小心使用它,否則你將進入爬行循環。

但我沒有請求相同的網址。這裏發生了什麼事?

感謝朋友們!

+0

最後檢查你的蜘蛛統計。你可能有一個非0的「offsite/filtered」。您需要在「allowed_domains」中使用域名,而不是URL。所以使用'allowed_domains = [「imdb.com」]' –

+0

你可以發佈你的日誌嗎?我剛剛嘗試過它,它工作正常,但是你的回調只是重定向到相同的分析方法,你幾乎堅持無限遞歸,因爲你不會在這裏產生任何項目。我沒有看到任何過濾的請求。 – Granitosaurus

+0

嗨保羅!你是對的,這只是允許的域名!謝謝! – polilla

回答

0

這是普通朋友的問題:

  • 格雷格和Melissa是朋友
  • Melissa和約翰是朋友
  • 約翰和傑克的朋友
  • 傑克和格雷格是朋友

在你的情況下,它是關於電影:

  • 的綜合分析表明我們是最好的
  • 我們是最好的建議告訴我愛
  • 告訴我愛建議一起

當你正在尋找它必然是在電影中重複幾次建議。最好的方法是將電影數據保存到數據庫中,並通過其ID提供建議。