def vacacy_parse(self, response: HtmlResponse): self.name = response.xpath('//h1/text()').extract_first() salary_job = response.css('p.vacancy-salary span::text').extract() salary_job = correct_list(salary_job) self.salary_parse(salary_job=salary_job) self.link = response._get_url() self.company_name = response.xpath( "//div[contains(@class, 'vacancy-company-name-wrapper')]//text()" ).extract() if len(self.company_name) > 1: self.company_name = ' '.join( map(str, correct_list(self.company_name))) else: self.company_name = self.company_name[0] self.address = response.xpath( "//p[contains(@data-qa, 'vacancy-view-location')]//text()" ).extract() if len(self.address) > 1: self.address = ', '.join(map(str, correct_list(self.address))) else: self.address = self.address[0] vacancy_description = response.xpath( "//div[@class='vacancy-description']") self.experience = vacancy_description.xpath( "//span[@data-qa='vacancy-experience']/text()").extract_first() self.mode = vacancy_description.xpath( "//p[@data-qa='vacancy-view-employment-mode']//text()").extract() self.mode = correct_list(self.mode) vacancy_desc_sections = vacancy_description.xpath( "//div[@class='vacancy-section']") self.description = vacancy_desc_sections[0].xpath( "//div[@data-qa='vacancy-description']//text()").extract() self.description = correct_list(self.description) self.description = '\n'.join(map(str, self.description)) self.accept_handicapped = vacancy_desc_sections[1].xpath( "//span[@xpath='1']//text()").extract() if not self.accept_handicapped: self.accept_handicapped = None self.key_skills = vacancy_desc_sections[2].xpath( "//span[contains(@class, 'bloko-tag__section_text')]/text()" ).extract() self.key_skills = correct_list(self.key_skills) yield JobparserItem(name=self.name, company_name=self.company_name, address=self.address, salary_min=self.salary_min, salary_max=self.salary_max, currency=self.currency, payment_type=self.payment_type, experience=self.experience, mode=self.mode, description=self.description, accept_handicapped=self.accept_handicapped, key_skills=self.key_skills, link=self.link, site=self.site)