Scrapy在每一行中返回相同的第一行数据,而不是为每一行返回单独的数据

时间:2019-04-09 22:14:06

标签: scrapy

我已经使用scrapy编写了一个简单的scrape,但是它不断返回目标数据的第一个实例,而不是返回来自目标数据的每个实例中每一行中的正确数据。在这种情况下,它将返回来自Indeed网站的所有已抓取作业的第一个链接,而不是每个作业的正确链接。

我已经尝试过使用(div)和避免(.//div)绝对路径,以及在lin的末尾使用[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 个答案:

答案 0 :(得分:1)

问题在下面的行中:

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] 

然后,您的代码将根据需要删除每个作业的链接。