【问题标题】:Scrapy xpath returns an empty list although tag and syntax are correctScrapy xpath 返回一个空列表,尽管标签和语法是正确的
【发布时间】:2015-07-23 10:18:54
【问题描述】:

在我的解析函数中,这是我编写的代码:

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    

并且标题返回一个空列表。

我正在捕获一个在链接中带有 id 标记的 xpath,然后在链接标记中,我想获取具有查看此职位描述的标题的所有值的列表。

请帮我修复代码中的错误。

【问题讨论】:

  • 你有没有把x的内容打印到控制台看是否包含你要搜索的title的元素?
  • 我已将其输出到 csv 文件,并在文件中仅返回标题作为列标题,其下方为空。
  • 我的意思是在您的代码中,您可以验证 Scrapy 获取的站点是否确实包含您想要的信息。例如,在for 循环中执行print x 来查看x 的内容是什么,看看是否找到了正确的元素。
  • HTML 有一个带有 id 的 table 标签,正如提到的其他一些属性。下面有一个 tbody ,tr 标签,我试图在其中获取数据。所以,在这种情况下,我有我的输出为
  • 将此视为可用的 html 代码的一部分 关联

标签: xpath scrapy


【解决方案1】:

如果您使用 curl "https://cognizant.taleo.net/careersection/indapac_itbpo_ext_career/moresearch.ftl?lang=en" 提供的 URL 请求 cURL,您将返回一个与您在浏览器中看到的不同的站点。您在以下 <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 请求(这并不难,因为这是唯一的一个)并从您的爬虫中调用它。然后从生成的数据集中,您可以提取所需的数据——您只需创建一个解析算法,该算法通过这种管道分隔格式并将其拆分为职位发布,然后提取您需要的信息,如职位、ID、日期和位置.

【讨论】:

  • 我在这里有几个问题: 1. 我们如何分析页面是否有任何 ajax 请求,以备将来使用。我已经禁用了 javascript,但仍然可以看到相同的页面。 2.如何使用scrapy处理这个我刚开始使用scrapy。所以任何关于链接的建议都会对我有所帮助。谢谢!
  • 很难判断一个站点是否以编程方式使用 XHR 请求。初始搜索应该在具有良好开发工具的浏览器中进行,您可以猜测这些请求背后的逻辑。我使用 Chrome,如果我在开发者工具窗口中禁用 JavaScript,我得到的站点与启用 JS 的站点不同——我得到了 Scrapy 得到的站点,但没有搜索结果。
  • 我用过firepath/firebug,我用firefox来做我的scrapy工作。我会试着再检查一次。如果在同样的情况下,请告诉我如何使用scrapy来获取我们在这种情况下感兴趣的数据。任何可以帮助我完成任务的工具等。
猜你喜欢
  • 1970-01-01
  • 2021-12-20
  • 1970-01-01
  • 2021-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多