Scrapy возвращает одни и те же данные первой строки в каждой строке вместо отдельных данных для каждой строки - PullRequest
0 голосов
/ 10 апреля 2019

Я написал простую очистку с использованием scrapy, но она продолжает возвращать первый экземпляр целевых данных вместо правильных данных в каждой строке из каждого экземпляра целевых данных. В этом случае он возвращает первую ссылку для всех очищенных заданий с веб-сайта «Действительно» вместо правильной ссылки для каждого задания.

Я пробовал использовать как (div), так и избегать (.//div) абсолютных путей, а также использовать [0] в конце строки. Без, [0], он возвращает все данные из всех строк в каждой ячейке.

Ссылка на пример исходных данных есть; https://www.indeed.co.uk/jobs?as_and=a&as_phr=&as_any=&as_not=IT+construction&as_ttl=Project+Manager&as_cmp=&jt=contract&st=&salary=%C2%A330K-%C2%A3460K&radius=25&fromage=2&limit=50&sort=date&psf=advsrch

Целевые данные: href = "/ rc / clk? Jk = 56e4f5164620b6da & fccid = 6920a3604c831610 & vjs = 3"

Целевые данные со страницы

<div class="title">
    <a target="_blank" id="jl_56e4f5164620b6da" href="/rc/clk?jk=56e4f5164620b6da&amp;fccid=6920a3604c831610&amp;vjs=3" onmousedown="return rclk(this,jobmap[0],1);" onclick=" setRefineByCookie(['radius', 'jobtype', 'salest']); return rclk(this,jobmap[0],true,1);" rel="noopener nofollow" title="Project Manager" class="jobtitle turnstileLink " data-tn-element="jobTitle">
        <b>Project</b> <b>Manager</b></a>

Вот мой код

def parse(self, response):
    titles = response.css('div.jobsearch-SerpJobCard')
    items = []
    for title in titles:
        item = ICcom4Item()
        home_url = ("http://www.indeed.co.uk")
        item ['role_title_link'] = titles.xpath('div[@class="title"]/a/@href').extract()[0] 

        items.append(item)
    return items

Мне просто нужна правильная ссылка для каждой вакансии. Вся помощь приветствуется!

1 Ответ

1 голос
/ 10 апреля 2019

Проблема в строке ниже:

item ['role_title_link'] = titles.xpath('div[@class="title"]/a/@href').extract()[0] 

Вместо titles.xpath следует использовать title.xpath, как показано ниже:

item ['role_title_link'] = title.xpath('div[@class="title"]/a/@href').extract()[0] 

Затем ваш код будет отбирать ссылку для каждой работы, как вы хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...