4

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

对于我需要的每一部电影:

  1. 电影的标题
  2. 发布日期(FR 中的“Date de Sortie”)
  3. 电影的类型

这是 Allociné 电影页面的示例(用于《星球大战 I》):http ://www.allocine.fr/film/fichefilm_gen_cfilm=20754.html

起初我尝试使用 import.io 的选择工具,但它不起作用,因为有些电影有两个发布日期而不是一个(如上面的 SW1 - 1999 年的原始版本和 2012 年的 3D 版本('重播')) - 搞砸了爬行者。所以我不得不使用 XPaths 来识别我需要的元素。标题工作得很好(使用//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]froma[1]以获得完整的a.

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

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

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

布莱斯

4

1 回答 1

2

对于发布日期,请尝试:

//span[@itemprop="datePublished"]/@content

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

对于类型尝试:

//span[@itemprop="genre"]/text()

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

于 2015-06-01T14:06:04.163 回答