Как включить следующие возможности URL для работы в моем коде? - PullRequest
0 голосов
/ 30 октября 2019

Я пытаюсь добавить функцию отслеживания URL, но не могу заставить ее работать. Мне нужно сканировать все страницы. Есть около 108 страниц списков вакансий. Спасибо.

import scrapy  

class JobItem(scrapy.Item):
    # Data structure to store the title, company name and location of the job
    title = scrapy.Field()
    company = scrapy.Field()
    location = scrapy.Field()

class PythonDocumentationSpider(scrapy.Spider):
    name = 'pydoc'
    start_urls = ['https://stackoverflow.com/jobs?med=site-ui&ref=jobs-tab']

    def parse(self, response):
        for follow_href in response.xpath('//h2[@class="fs-body2 job-details__spaced mb4"]/a/@href'):
            follow_url = response.urljoin(follow_href.extract())
            yield scrapy.Request(follow_url, callback=self.parse_page_title)  
        for a_el in response.xpath('//div[@class="-job-summary"]'):
            section = JobItem()
            section['title'] = a_el.xpath('.//a[@class="s-link s-link__visited job-link"]/text()').extract()[0]
            span_texts = a_el.xpath('.//div[@class="fc-black-700 fs-body1 -company"]/span/text()').extract()
            section['company'] = span_texts[0]
            section['location'] = span_texts[1]
            print(section['location'])
            #print(type(section))
            yield section

Я пытаюсь настроить URL-адрес для работы с моим кодом, а затем сканировать страницы и сохранять объявления о вакансиях в CSV-файле.

1 Ответ

1 голос
/ 31 октября 2019

.extract() возврат список . В большинстве случаев вам нужно будет использовать .get() или .extract_first(), если вам не нужен список. Сначала вам нужно переписать эту часть:

for follow_href in response.xpath('//h2[@class="fs-body2 job-details__spaced mb4"]/a/@href').getall(): # or .extract()
    follow_url = response.urljoin(follow_href)
    yield scrapy.Request(follow_url, callback=self.parse_page_title)  
...