2

一連のページを調べていますが、いくつあるかはわかりませんが、現在のページは、URL に含まれる単純な数字で表されます (例: http://www.website.com/page/1 ")

Scrapy で for ループを使用して、ページの現在の推測をインクリメントし、404 に達したときに停止したいと思います。リクエストから返される応答にこの情報が含まれていることは知っていますが、自動的に取得する方法がわかりませんリクエストからのレスポンス。

これを行う方法についてのアイデアはありますか?

現在、私のコードは次のようなものです:

def start_requests(self):
    baseUrl = "http://website.com/page/"
    currentPage = 0
    stillExists = True
    while(stillExists):
        currentUrl = baseUrl + str(currentPage)
        test = Request(currentUrl)
        if test.response.status != 404: #This is what I'm not sure of
            yield test
            currentPage += 1
        else:
            stillExists = False
4

2 に答える 2

2

ステータスを確認するには、リクエストを生成/返す必要がありRequestます。オブジェクトを作成しても実際には送信されません。

class MySpider(BaseSpider):
    name = 'website.com'
    baseUrl = "http://website.com/page/"

    def start_requests(self):
        yield Request(self.baseUrl + '0')

    def parse(self, response):
        if response.status != 404:
            page = response.meta.get('page', 0) + 1
            return Request('%s%s' % (self.baseUrl, page), meta=dict(page=page))
于 2013-04-08T02:13:22.617 に答える