Python 使用scrapy进行递归刮取时出现属性错误
我有一个scrapy spider,只要我给它一个包含指向它应该刮取的页面的链接的页面,它就可以正常工作。 现在,我不想给它所有的类别,但网页包含所有类别的链接。 我想我可以简单地添加另一个解析函数来实现这一点 但是控制台输出给了我一个属性错误 attributeError:“zaubersonder”对象没有属性 “解析详细信息” 这告诉我,它工作不正常。 我不熟悉面向对象,但我认为scarpy调用的是parse,它调用的是prase_level2,wich反过来调用parse_细节,这应该可以很好地工作 以下是我迄今为止的努力Python 使用scrapy进行递归刮取时出现属性错误,python,web-scraping,scrapy,Python,Web Scraping,Scrapy,我有一个scrapy spider,只要我给它一个包含指向它应该刮取的页面的链接的页面,它就可以正常工作。 现在,我不想给它所有的类别,但网页包含所有类别的链接。 我想我可以简单地添加另一个解析函数来实现这一点 但是控制台输出给了我一个属性错误 attributeError:“zaubersonder”对象没有属性 “解析详细信息” 这告诉我,它工作不正常。 我不熟悉面向对象,但我认为scarpy调用的是parse,它调用的是prase_level2,wich反过来调用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(),
}
编辑:修复了代码,以防有人搜索它代码中有输入错误。parse_level2中的回调是self.parsedetails,但函数名为parse_details 只需将parse_level2中的收益率更改为: …而且它应该工作得更好
yield scrapy.Request(url=url2,callback=self.parse_details)