サイトのクロールに取り組んでいますが、行き詰っています。ある 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
どんな助けでも素晴らしいでしょう。本当にありがとう。