好的,所以我正在研究一個基於scrapy的web爬蟲,它具有一些簡單的功能。機器人應該從一頁頁到另一頁,解析然後下載。我已經得到解析器的工作,我已經得到了下載工作。我無法抓取抓取工作。我已閱讀Spider類的文檔,我已閱讀關於解析應如何工作的文檔。我嘗試過迴歸vs屈服,而我依然無處可尋。我不知道我的代碼出錯了。從我寫的一個調試腳本看來,似乎發生了以下情況。代碼將運行,它會抓住頁面1,它會得到第二頁的鏈接,它將轉到第二頁,然後它將愉快地停留在第二頁上,而不是抓住第三頁。我不知道我的代碼中的錯誤在哪裏,或者如何修改它來修復它。所以任何幫助,將不勝感激。我確定這個錯誤是基本的,但我無法弄清楚發生了什麼。Scrapy webcrawler陷入無限循環,儘管最初工作。
import scrapy
class ParadiseSpider(scrapy.Spider):
name = "testcrawl2"
start_urls = [
"http://forums.somethingawful.com/showthread.php?threadid=3755369&pagenumber=1",
]
def __init__(self):
self.found = 0
self.goto = "no"
def parse(self, response):
urlthing = response.xpath("//a[@title='Next page']").extract()
urlthing = urlthing.pop()
newurl = urlthing.split()
print newurl
url = newurl[1]
url = url.replace("href=", "")
url = url.replace('"', "")
url = "http://forums.somethingawful.com/" + url
print url
self.goto = url
return scrapy.Request(self.goto, callback=self.parse_save, dont_filter = True)
def parse_save(self, response):
nfound = str(self.found)
print "Testing" + nfound
self.found = self.found + 1
return scrapy.Request(self.goto, callback=self.parse, dont_filter = True)
請勿使用spider屬性通過回調傳遞變量。使用'request.meta'來傳遞值。 – Rolando