0

フォーラムからいくつかのガイドをクロールする Scrapy Crawler があります。データをクロールしようとしているフォーラムには、多数のページがあります。問題は、選択する特定のクラスまたは ID がないため、必要なリンクを抽出できないことです。URL 構造は次のようになります: http://www.guides.com/forums/forumdisplay.php?f=108&order=desc&page=1 もちろん、desc&page=1 の後の数字を 2、3、4 などに変更できます。しかし、これを行うための最良の選択は何かを知りたいです。どうすればそれを達成できますか?

PS: これはスパイダー コードです http://dpaste.com/hold/794794/

4

1 に答える 1

1

フォーラムの URL を開くことができないようです (常に別の Web サイトにリダイレクトされます)。

スレッド ページに他のページへのリンクがある場合は、これらのリンクを明示的にたどるクローラー ルールを作成できます。そのために CrawlSpider を使用します。

class GuideSpider(CrawlSpider):
    name = "Guide"
    allowed_domains = ['www.guides.com']
    start_urls = [
        "http://www.guides.com/forums/forumdisplay.php?f=108&order=desc&page=1",
    ]

    rules = [
        Rule(SgmlLinkExtractor(allow=("forumdisplay.php.*f=108.*page=",), callback='parse_item', follow=True)),
    ]

    def parse_item(self, response):
        # Your code
        ...

スパイダーはリクエストを自動的に重複排除する必要があります。つまり、2 つのページがリンクしている場合でも、同じ URL を 2 回たどることはありません。ページに非常によく似た URL があり、クエリ引数が 1 つまたは 2 つしか異なる場合 (たとえば、 )、それらを除外するようにルール コンストラクターでorder=asc指定できます。deny=(...)

于 2012-09-03T18:15:58.980 に答える