Я читаю отзыв от Moocs это нравится one
Оттуда я получаю все детали курса, 5 предметов и еще 6 предметов из каждого обзора.
Это код, который у меня есть для деталей курса:
def parse_reviews(self, response):
l = ItemLoader(item=MoocsItem(), response=response)
l.add_xpath('course_title', '//*[@class="course-header-ng__main-info__name__title"]//text()')
l.add_xpath('course_description', '//*[@class="course-info__description"]//p/text()')
l.add_xpath('course_instructors', '//*[@class="course-info__instructors__names"]//text()')
l.add_xpath('course_key_concepts', '//*[@class="key-concepts__labels"]//text()')
l.add_value('course_link', response.url)
return l.load_item()
Теперь я хочу включить подробности обзора, еще 5 пунктов для каждого обзора.
Поскольку данные курса являются общими для всех рецензий, я хочу сохранить их в другом файле и использовать имя / идентификатор курса для последующего сопоставления данных.
Вот код, который у меня есть для пунктов обзора:
for review in response.xpath('//*[@class="review-body"]'):
review_body = review.xpath('.//div[@class="review-body__content"]//text()').extract()
course_stage = review.xpath('.//*[@class="review-body-info__course-stage--completed"]//text()').extract()
user_name = review.xpath('.//*[@class="review-body__username"]//text()').extract()
review_date = review.xpath('.//*[@itemprop="datePublished"]/@datetime').extract()
score = review.xpath('.//*[@class="sr-only"]//text()').extract()
Я пытался работать с временным решением, возвращая все элементы для каждого случая, но тоже не работает:
def parse_reviews(self, response):
#print response.body
l = ItemLoader(item=MoocsItem(), response=response)
#l = MyItemLoader(selector=response)
l.add_xpath('course_title', '//*[@class="course-header-ng__main-info__name__title"]//text()')
l.add_xpath('course_description', '//*[@class="course-info__description"]//p/text()')
l.add_xpath('course_instructors', '//*[@class="course-info__instructors__names"]//text()')
l.add_xpath('course_key_concepts', '//*[@class="key-concepts__labels"]//text()')
l.add_value('course_link', response.url)
for review in response.xpath('//*[@class="review-body"]'):
l.add_xpath('review_body', './/div[@class="review-body__content"]//text()')
l.add_xpath('course_stage', './/*[@class="review-body-info__course-stage--completed"]//text()')
l.add_xpath('user_name', './/*[@class="review-body__username"]//text()')
l.add_xpath('review_date', './/*[@itemprop="datePublished"]/@datetime')
l.add_xpath('score', './/*[@class="sr-only"]//text()')
yield l.load_item()
Выходной файл для этого скрипта поврежден, ячейки смещены, а размер полей неверен.
EDIT:
Я хочу иметь два файла на выходе:
Первый содержит:
course_title,course_description,course_instructors,course_key_concepts,course_link
И второй с:
course_title,review_body,course_stage,user_name,review_date,score