无法在import.io的爬虫中获取网页元素的正确XPath

4
我正在尝试使用import.io的Crawler创建一个.csv文件,其中包含来自Allociné网站(最大的法国电影数据库)的电影数据,用于研究项目。因为我的编程知识很差(目前在生态学博士学位),使用易于理解的工具似乎是最好的选择。对于每部电影,我需要以下信息:
1. 电影的标题 2. 发布日期(FR中的'Date de Sortie') 3. 电影的流派
以下是Allociné电影页面的示例(如Star Wars 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来收集所有的类型,因此我从[1]中删除了a[1],以获取整个a
//*[@id="col_main"]/div[4]/div/div[2]/table/tbody/tr[5]/td/a/span

它仍然无法工作,import.io 返回一个空元素。
因此,任何关于为什么它不起作用的解释都将非常感激!如果我漏掉了一些显而易见的东西,很抱歉,正如我所说,我根本不是专家。
Blaise
1个回答

2

发行日期请尝试:

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

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

而对于类型,请尝试:

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接