1


次のページのリンクをたどる再帰ルールのスパイダーを作りました。それは正常に動作します。
スパイダーは、「start_urls」で定義された最初のページを除くすべてのページ (999) をクロールします。誰かが問題を抱えたことがありますか?

サンプルコード:

class example(CrawlSpider):
    name = "example"
    allowed_domains = ["example.ndd"]
    start_urls = ["http://example.ndd/startnum=1"] #first page  

    rules = (Rule(SgmlLinkExtractor(allow=("nextPage\.htm", ),
                            restrict_xpaths=('//div[@class="paging"]/p[@class="nav"]',)), 
                            callback="parse_items", follow= True),)

    def parse_items(self, response):
        hxs = HtmlXPathSelector(response)
        links= hxs.select('//td[@class="desc"]/h3/a/@href').extract()
        list = []
        for link in links:
            yield link
        return

編集: 検索後、クローラーはルールの制限パスの結果に直接従うようです。同じように、startnum=1 で始まる場合、startnum=1 のページ内にある startnum=11 をクロールします
。この問題を解決する方法がわかりません。

4

2 に答える 2

6

以下を使用する必要があります。def parse_start_url(self, response):

この回答を参照してください: Scrapy CrawlSpider は最初のランディング ページをクロールしません

于 2013-04-24T19:01:01.593 に答える
0

start_urlsをクロールして他のページと同様に抽出したいということですか?

CrawlSpiderからアイテムを抽出しませんstart_urls。必要に応じて、parseメソッドをオーバーロードします。

于 2013-04-24T16:38:00.083 に答える