无法在import.io的抓取工具中获取适当的网页元素XPath

时间:2015-05-28 12:16:58

标签: xml xpath web-crawler import.io

我正在尝试使用import.io的Crawler从研究项目Allociné(法国最大的电影数据库)网站创建一个.csv文件,因为我的编程知识很差(目前正在攻读生态学博士学位)并且有一个易于理解的工具似乎是最好的主意。

对于我需要的每部电影:

  1. 电影的标题
  2. 发布日期(FR中的'Date de Sortie')
  3. 电影的类型
  4. 以下是Allociné电影页面的示例(适用于星球大战I):http://www.allocine.fr/film/fichefilm_gen_cfilm=20754.html

    起初我尝试使用import.io的选择工具,但它没有用,因为有些电影有两个发布日期而不是一个(如上面的SW1-- 1999年的原始版本和2012年的3D版本('reprise')) - 与Crawler搞砸了。所以我不得不使用XPath来识别我需要的元素。标题工作正常(使用//title),但我对发布日期和流派有问题。

    对于发布日期,我从页面源中提取的XPath是:

    //*[@id="col_main"]/div[4]/div/div[2]/table/tbody/tr[2]/td/a/strong/span
    

    我在最后添加/@content以yyyy-MM-dd格式获取日期,这导致:

    //*[@id="col_main"]/div[4]/div/div[2]/table/tbody/tr[2]/td/a/strong/span/@content
    

    但是,import.io无法识别我需要他找到的元素。

    对于类型,同样的事情,我从Chrome获得了第一个类型(科幻小说)的XPath:

    //*[@id="col_main"]/div[4]/div/div[2]/table/tbody/tr[5]/td/a[1]/span
    

    我需要import.io来收集所有类型,因此我从[1]移除了a[1]以获得a的全部内容。

    //*[@id="col_main"]/div[4]/div/div[2]/table/tbody/tr[5]/td/a/span
    

    它也不起作用,import.io返回一个null元素。

    所以,任何关于它为什么不起作用的解释都将非常感激!对不起,如果我错过了一些明显的东西,就像我说的那样,我根本不是专家。

    布莱斯

1 个答案:

答案 0 :(得分:2)

对于发布日期,请尝试:

//跨度[@ itemprop = “datePublished”] / @含量

这基本上意味着:找到一个具有名为“datePublished”属性的span节点,并提取名为“content”的属性

对于类型尝试:

//跨度[@ itemprop = “流派”] /文本()

这意味着找到一个具有名为“genre”属性的span节点,并提取其后面的文本。