我正在尝试使用 import.io 的 Crawler 为一个研究项目创建一个包含 Allociné(法国最大的电影数据库)网站上的电影数据的 .csv 文件,因为我的编程知识很差(目前正在攻读生态学博士学位) ) 并且拥有一个易于理解的工具似乎是最好的主意。
对于我需要的每部电影:
- 电影名称
- 发布日期(法国的“Date de Sortie”)
- 电影的类型
这是一个 Allociné 电影页面的示例(针对星球大战 I):http://www.allocine.fr/film/fichefilm_gen_cfilm=20754.html
起初我尝试使用 import.io 的选择工具,但它没有用,因为有些电影有两个发行日期而不是一个(如上面的 SW1 - 1999 年的原始发行和 2012 年的 3D 发行('reprise') -与爬行者搞砸了。所以我不得不使用 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 来收集所有流派,所以我从 a[1]
中删除了 [1]
以获得整个 a
。
//*[@id="col_main"]/div[4]/div/div[2]/table/tbody/tr[5]/td/a/span
也不行,import.io 返回一个空元素。
因此,非常感谢任何关于它为什么不起作用的解释!很抱歉,如果我遗漏了一些明显的东西,正如我所说,我根本不是专家。
布莱斯
最佳答案
对于发布日期尝试:
//span[@itemprop="datePublished"]/@content
这基本上意味着:找到一个具有名为“datePublished”的属性的跨度节点并提取名为“content”的属性
对于流派尝试:
//跨度[@itemprop="流派"]/文本()
这意味着找到一个具有名为“流派”的属性的跨度节点,并提取其后的文本。
关于xml - 无法在 import.io 的爬虫中为网页元素获取正确的 XPath,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30506353/