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的「offsite/filtered」。您需要在「allowed_domains」中使用域名,而不是URL。所以使用'allowed_domains = [「imdb.com」]' –
你可以發佈你的日誌嗎?我剛剛嘗試過它,它工作正常,但是你的回調只是重定向到相同的分析方法,你幾乎堅持無限遞歸,因爲你不會在這裏產生任何項目。我沒有看到任何過濾的請求。 – Granitosaurus
嗨保羅!你是對的,這只是允許的域名!謝謝! – polilla