나는 스크래핑 스파이더를 가지고 있는데, 스크래피 스파이더는 스크래핑해야하는 페이지에 대한 링크가 포함 된 페이지를 제공합니다. 이제 모든 범주에 제공하지 않고 모든 범주에 대한 링크가 포함 된 페이지를 제공하고 싶습니다. 나는 이것을 얻기 위해 다른 구문 분석 함수를 간단히 추가 할 수 있다고 생각했습니다.재귀 스크 레이 핑 중 속성 오류
하지만 콘솔 출력은 나에게이 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