Парсинг ссылок со страницы
Задача заключается в том, чтобы спарсить нужную информацию с карточки вакансии, затем из страницы с этой вакансией достать недостающую информацию
Получается достать эти данные, но не объединить их
Подскажите, пожалуйста, какими способами попробовать решить
Ниже код, до которого я додумался и встал
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 vacancy in response.xpath('//div[@class="vacancy-serp-item "]'):
vacancy_href = vacancy.xpath('.//a[@class="bloko-link HH-LinkModifier"]/@href').get()
data = {'title': vacancy.xpath('.//a[@class="bloko-link HH-LinkModifier"]/text()').get(),
'employer': vacancy.xpath('.//span[@class="bloko-section-header-3 bloko-section-header-3_lite"]/text()').get(),
'salary': vacancy.xpath('.//a[@class="bloko-link bloko-link_secondary"]/text()').get(),
# обращается к функции, чтобы спарсить вложенную страницу
'details': 1}
yield data
for i in response.xpath('//a[@class="bloko-link HH-LinkModifier"]/@href'):
abc = response.follow(i, callback=self.parse_vacancy)
yield abc
def parse_vacancy(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()}
if __name__ == '__main__':
crawler_settings = Settings()
# crawler_settings.setmodule(settings)
process = CrawlerProcess(settings=crawler_settings)
process.crawl(TutorSpider)
process.start()