我有一個CrawlSpider設立以下的某些環節和刮新聞雜誌,其中的鏈接,每一個問題遵循下列URL方案:Scrapy是繼刮不允許的鏈接
http://example.com/YYYY/DDDD/index.htm其中YYYY是年份, DDDD是三位或四位數問題編號。
我只想問題928以上,並有我的規則下面。我沒有任何問題連接到網站,抓取鏈接或提取項目(所以我沒有包括我的代碼的其餘部分)。蜘蛛似乎決定遵循不允許的鏈接。它試圖刮掉377,398等問題,並遵循「culture.htm」和「feature.htm」鏈接。這會引發很多錯誤,並且不是非常重要,但它需要大量的數據清理。任何關於發生了什麼問題的建議?
class crawlerNameSpider(CrawlSpider):
name = 'crawler'
allowed_domains = ["example.com"]
start_urls = ["http://example.com/issues.htm"]
rules = (
Rule(SgmlLinkExtractor(allow = ('\d\d\d\d/(92[8-9]|9[3-9][0-9]|\d\d\d\d)/index\.htm',)), follow = True),
Rule(SgmlLinkExtractor(allow = ('fr[0-9].htm',)), callback = 'parse_item'),
Rule(SgmlLinkExtractor(allow = ('eg[0-9]*.htm',)), callback = 'parse_item'),
Rule(SgmlLinkExtractor(allow = ('ec[0-9]*.htm',)), callback = 'parse_item'),
Rule(SgmlLinkExtractor(allow = ('op[0-9]*.htm',)), callback = 'parse_item'),
Rule(SgmlLinkExtractor(allow = ('sc[0-9]*.htm',)), callback = 'parse_item'),
Rule(SgmlLinkExtractor(allow = ('re[0-9]*.htm',)), callback = 'parse_item'),
Rule(SgmlLinkExtractor(allow = ('in[0-9]*.htm',)), callback = 'parse_item'),
Rule(SgmlLinkExtractor(deny = ('culture.htm',)),),
Rule(SgmlLinkExtractor(deny = ('feature.htm',)),),
)
編輯:我解決了這個問題用一個更簡單的正則表達式FOT 2009年,2010年,2011年,但我仍然好奇,爲什麼上面的,如果任何人有任何建議不起作用。
神奇。謝謝您的幫助! – Trey 2011-12-17 19:56:55