Задача состоит в том, чтобы спарсить карточку, затем перейти по ссылке в карточке и еще оттуда достать неодходимые данные, но так, чтобы это выводилось вместе.
Сейчас у меня получается только раздельно вывести и, по всей видимости, в разноброс.
Пробовал объединять в переменную, но выводило ошибку
По-разному уже извращался, но без результата
Что можно попробовать сделать? И возможно ли такое вообще?)
class TutorSpider(scrapy.Spider):
name = 'tutorial'
start_urls = [
'https://hh.ru/search/vacancy?L_is_autosearch=false&area=3&clusters=true&enable_snippets=true&text=Python&page=0',
]
def parse(self, response: HtmlResponse):
"""vacancy_href = response.xpath('//a[@class="bloko-link HH-LinkModifier"]/@href')
for href in vacancy_href:
yield response.follow(href, callback=self.parse_vacancy)"""
# Переходит по страницам
next_page = response.xpath('//a[@class="bloko-button HH-Pager-Controls-Next HH-Pager-Control"]')
for page in next_page:
yield response.follow(page, callback=self.parse)
# Парсит карточку с вакансией
for card_vacancy in response.xpath('//div[@class="vacancy-serp-item "]'):
yield {'title': card_vacancy.xpath('.//a[@class="bloko-link HH-LinkModifier"]/text()').get(),
'salary': card_vacancy.xpath('.//span[@class="bloko-section-header-3 bloko-section-header-3_lite"]/text()').get(),
'employer': card_vacancy.xpath('.//a[@class="bloko-link bloko-link_secondary"]/text()').get(),
}
# Парсит страницу с тегами и адресом
for page_with_details in response.xpath('//a[@class="bloko-link HH-LinkModifier"]'):
yield response.follow(page_with_details, self.parse_vacancy_details)
def parse_vacancy_details(self, response: HtmlResponse):
yield {'place': response.xpath('//span[@data-qa="vacancy-view-raw-address"]/text()').get(),
'tags': response.xpath('//span[@data-qa="bloko-tag__text"]/text()').getall(),
'url': response.url,
}