コード例 #1
0
    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)