我正在尝试使用import.io的Crawler从研究项目Allociné(法国最大的电影数据库)网站创建一个.csv文件,因为我的编程知识很差(目前正在攻读生态学博士学位)并且有一个易于理解的工具似乎是最好的主意。
对于我需要的每部电影:
以下是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元素。
所以,任何关于它为什么不起作用的解释都将非常感激!对不起,如果我错过了一些明显的东西,就像我说的那样,我根本不是专家。
布莱斯
答案 0 :(得分:2)
对于发布日期,请尝试:
//跨度[@ itemprop = “datePublished”] / @含量
这基本上意味着:找到一个具有名为“datePublished”属性的span节点,并提取名为“content”的属性
对于类型尝试:
//跨度[@ itemprop = “流派”] /文本()
这意味着找到一个具有名为“genre”属性的span节点,并提取其后面的文本。