2014-01-08 65 views
0

我有以下規則Scrapy是跳過我的拒絕規則

Rule(SgmlLinkExtractor(allow=r'.*?', deny=r'/preferences')), 
    Rule(SgmlLinkExtractor(allow=r'.*?', deny=r'/auth')),follow=True), 

但我看到在日誌下面。我也嘗試過,沒有允許=,它仍然是一樣的。我是否需要忽略來自中間件的這些URL?

014-01-08 21:31:07 + 0100 [mybot] DEBUG:爬(200)http://mydomain.com/preferences/language?continue_to=xxxxx>(引薦:http://mydomain.com/categories/something-something-something

回答

0

從Scrapy docs

如果有多個規則匹配相同的環節,第一個將被使用, 根據他們在此屬性定義的順序。

所以,你在一個或另一個規則中匹配任何URL。只需將所有拒絕規則一:

Rule(SgmlLinkExtractor(deny = (r'\/preferences', r'\/auth'))) 

幾點注意事項:

  • 拒絕規則是正則表達式的模式,所以你應該使用\/
  • 比賽是在絕對URL取得所以我前綴的域名模式,如http:\/\/mydomain.com\/preferences
  • follow = True如果你不Rule
使用 callback