我已经使用scrapy编写了一个简单的scrape,但是它不断返回目标数据的第一个实例,而不是返回来自目标数据的每个实例中每一行中的正确数据。在这种情况下,它将返回来自Indeed网站的所有已抓取作业的第一个链接,而不是每个作业的正确链接。
我已经尝试过使用(div)和避免(.//div)绝对路径,以及在lin的末尾使用[0]。不使用[0],它将返回每个单元格中所有行的所有数据。
目标数据是href =“ / rc / clk?jk = 56e4f5164620b6da&fccid = 6920a3604c831610&vjs = 3”
<div class="title">
<a target="_blank" id="jl_56e4f5164620b6da" href="/rc/clk?jk=56e4f5164620b6da&fccid=6920a3604c831610&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
我只需要显示每个作业的正确链接即可。欢迎所有帮助!
答案 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]
然后,您的代码将根据需要删除每个作业的链接。