我正在尝试使用import.io的Crawler创建一个带有来自Allociné网站(法国最大的电影数据库)的电影数据的.csv文件,因为我的编程知识很差(目前正在从事生态学博士学位)并且一个易于理解的工具似乎是最好的主意.
对于我需要的每部电影:
>电影的标题
>发布日期(FR中的’Date de Sortie’)
>电影的类型
以下是Allociné电影页面(适用于星球大战I)的示例:http://www.allocine.fr/film/fichefilm_gen_cfilm=20754.html
起初我尝试使用import.io的选择工具,但它不起作用,因为有些电影有两个发布日期而不是一个(如上面的SW1– 1999年的原始版本和2012年的3D版本(‘reprise’)) – 这搞砸了爬行者.所以我不得不使用XPath来识别我需要的元素.标题工作正常(使用//标题),但我有发布日期和流派的问题.
对于发布日期,我从页面源中提取的XPath是:
//*[@id="col_main"]/div[4]/div/div[2]/table/tbody/tr[2]/td/a/strong/span
我在最后添加/ @内容以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]中删除[1]以获得整个类型.
//*[@id="col_main"]/div[4]/div/div[2]/table/tbody/tr[5]/td/a/span
它也不起作用,import.io返回一个null元素.
所以,任何解释为什么它不工作将非常感谢!对不起,如果我错过了一些明显的东西,就像我说的那样,我根本不是专家.
布莱斯
最佳答案 对于发布日期,请尝试:
//跨度[@ itemprop = “datePublished”] / @内容
这基本上意味着:找到一个具有名为“datePublished”属性的span节点,并提取名为“content”的属性
对于类型尝试:
//跨度[@ itemprop = “流派”] /文本()
这意味着找到一个具有名为“genre”属性的span节点,并提取其后面的文本.