1

サイトのクロールに取り組んでいますが、行き詰っています。ある URL から始めて、そこから派生する後続のすべての URL をクロールし、それらから派生するすべての URL などを可能な限り詳細にクロールする必要があります。以前の投稿を検索しましたが、まだ問題の解決策が見つかりません。

コードを実行すると、開始 URL からリンクがスクレイピングされますが、開始 URL のリンクはクロールされません。私はしばらくの間これを解決しようとしてきましたが、できません。

私の問題は、設定しているルールにある可能性があると思いますが、よくわかりません。許可されたドメインを削除し、コードに follow=True を含めたことを確認しました。callback=parse を含めることが問題になることはわかっていますが、callback='parse_item' を含めることは問題ではないようです。また、それを削除しようとしましたが、違いはありません。

パイプラインまたは設定フォルダーに変更を加えていないのは、それらに対して何をするかわからないためです。私のアイテムは非常に標準的です。それは 1 つのフィールドであり、それをロードするために、hospitalone.items から HospitaloneItem をインポートします。私のコードの残りの部分は以下の通りです:

class HopitaloneSpider(CrawlSpider):
    name = 'example.org'
    #allowed_domains = ['http://>example.org/']
    start_urls = [
        'http://example.org/'
    ]

    rules = (
        #Rule(SgmlLinkExtractor(allow='>example\.org', )),
        Rule(SgmlLinkExtractor(allow=('\w+$', )), callback='parse_item', follow=True),
    )

    def parse(self, response):
        hxs = HtmlXPathSelector(response)
        item = HospitaloneItem()
        item['name'] = hxs.select('//a').extract()
        return item

どんな助けでも素晴らしいでしょう。本当にありがとう。

4

1 に答える 1

2

CrawlSpider を使用しているため、解析メソッドをオーバーライドしてはいけません。役立つリンクは次のとおりです。http://doc.scrapy.org/en/latest/topics/spiders.html#crawling-rules

例に従って、別の解析関数を実装します

于 2012-08-29T22:10:40.467 に答える