在我的解析函数中,这是我写的代码:
hs = Selector(response)
links = hs.xpath(".//*[@id='requisitionListInterface.listRequisition']")
items = []
for x in links:
item = CrawlsiteItem()
item["title"] = x.xpath('.//*[contains(@title, "View this job description")]/text()').extract()
items.append(item)
return items
和title返回一个空列表。
我在链接中捕获带有id标记的xpath,然后在links标记中,我想获得所有值的列表,其中包含查看此作业描述的标题。
请帮我修复代码中的错误。
答案 0 :(得分:0)
如果您查询了curl "https://cognizant.taleo.net/careersection/indapac_itbpo_ext_career/moresearch.ftl?lang=en"
提供的网址请求,则会返回与您在浏览器中看到的网站不同的网站。您的搜索结果位于以下<a>
元素中,该元素没有任何text()
属性可供选择:
<a id="requisitionListInterface.reqTitleLinkAction"
title="View this job description"
href="#"
onclick="javascript:setEvent(event);requisition_openRequisitionDescription('requisitionListInterface','actOpenRequisitionDescription',_ftl_api.lstVal('requisitionListInterface', 'requisitionListInterface.listRequisition', 'requisitionListInterface.ID5645', this),_ftl_api.intVal('requisitionListInterface', 'requisitionListInterface.ID5649', this));return ftlUtil_followLink(this);">
</a>
这是因为网站加载网站加载了XHR请求显示的信息(您可以在Chrome中查找),然后使用返回的信息动态更新网站。
对于您要提取的信息,您应该找到此XHR请求(这并不难,因为这是唯一的)并从您的scraper中调用它。然后,从结果数据集中,您可以提取所需的数据 - 您只需创建一个解析算法,该算法将通过此管道分隔格式并将其拆分为作业发布,然后提取您需要的信息,如位置,ID,日期和位置