所以我有一只蜘蛛,如下所示:class CoursesSpider(scrapy.Spider):
name = "courses"
start_urls = [
'http://example.com'
]
def parse(self, response):
for subject in response.css('subject'):
subject_name = subject.css('subject::text').extract_first().strip()
subject_link = subject.css('subject::attr(href)').extract_first().strip()
subject_id = subject.css('subject::attr(id)').extract_first().strip()
if subject_link is not None:
subject_data = scrapy.Request(subject_link, callback=self.parse_course)
yield {
'subject_name': subject_name,
'subject_link': subject_link,
'subject_id': subject_id,
'subject_data': subject_data,
}
def parse_course(self, response):
subject_id = response.css('::attr(id)').extract_first().strip()
for course in response.css('course'):
course_name = course.css('course::text').extract_first().strip()
course_link = course.css('course::attr(href)').extract_first().strip()
course_id = course.css('course::attr(id)').extract_first().strip()
if course_link is not None:
course_data = scrapy.Request(course_link, callback=self.parse_class)
yield {
'course_name': course_name,
'course_link': course_link,
'course_id': subject_id + " " + course_id,
'course_data': course_data,
}
def parse_class(self, response):
course_id = response.css('::attr(id)').extract_first().strip()
for section in response.css('section'):
section_name = section.css('section::text').extract_first().strip()
section_link = section.css('section::attr(href)').extract_first().strip()
yield {
'section_name': section_name,
'section_link': section_link,
'course_id': course_id,
}
我想获得一个输出json文件,该文件具有树结构,如:
^{pr2}$
但是我只得到:
^{pr3}$
从我的理解来看,这是因为收益代码还没有被执行。我该怎么称呼一个“垃圾爬网课程-o”courses.json“这完全调用了所有请求?如果这不可能的话,我怎么能自己做?我可以稍后在python文件中导入json并运行吗http://example.com/southing>;下面的呢?
我知道有很多代码,但应该澄清。
谢谢你的帮助!