スクラップスパイダーは、スクラップしなければならないページへのリンクを含むページを提供する限り、うまく機能します。 今私はすべてのカテゴリには与えたくないが、すべてのカテゴリへのリンクを含むページ。 これを実現するために、別の解析関数を追加するだけでいいと思っていました。スクラブを使用した再帰的スクレイピング中の属性エラー
が、コンソール出力は、これはsome attribute refferenceが正しく動作していないことを私に伝えます
"attributeError: 'zaubersonder' object has no attribute 'parsedetails'"
私の属性のエラーが発生します。 私はオブジェクト指向に新しいですが、私はscarpyがparse_detailsを呼び出すprase_level2を呼び出しているparseを呼び出していると思っています。これは正常に動作するはずです。
以下は私の努力です。
import scrapy
class zaubersonder(scrapy.Spider):
name = 'zaubersonder'
allowed_domains = ['abc.de']
start_urls = ['http://www.abc.de/index.php/rgergegregre.html'
]
def parse(self, response):
urls = response.css('a.ulSubMenu::attr(href)').extract() # links to categories
for url in urls:
url = response.urljoin(url)
yield scrapy.Request(url=url,callback=self.parse_level2)
def parse_level2(self, response):
urls2 = response.css('a.ulSubMenu::attr(href)').extract() # links to entries
for url2 in urls2:
url2 = response.urljoin(url2)
yield scrapy.Request(url=url2,callback=self.parse_details)
def parse_details(self,response): #extract entries
yield {
"Titel": response.css("li.active.last::text").extract(),
"Content": response.css('div.ce_text.first.block').extract() + response.css('div.ce_text.last.block').extract(),
}
編集は:コードのタイプミスがあり、それ
ありがとう、これでした。私は今、ばかげている – Nivatius