我正在尝试使用YQL获取imdb映像的src。我不确定XPath应该是什么 - 它是Firebug给你的XPath吗?你能告诉我为什么这会失败以及什么是正确的XPath?感谢
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
</head>
<body>
<script>
$.getJSON(
'http://query.yahooapis.com/v1/public/yql?callback=?',
{
q: 'select * from html where url="http://www.imdb.com/find?q=back+to+the+future&s=all" and xpath="/html/body/div[1]/div/div[4]/div[3]/div[1]/div/div[2]/table/tbody/tr[1]/td[1]/a/img"',
format: 'json'
},
function(data) {
console.log(data.query.results)
}
);
</script>
<div id='yqlresult'>
</div>
</body>
</html>
答案 0 :(得分:1)
嗯,如果你想提一下你真正想要的东西,那会有所帮助。现在,我将简单地假设您正在寻找此列表中的第一张图片。您可以使用以下XPath获取它,它不仅可以工作,而且比您提供的XPath更稳定。例如,如果IMDb决定更改或插入一些div
元素会发生什么?你的XPath很可能是无效的。
然而,这应该有效:
(//td[@class="primary_photo"]/a/img)[1]
它选择所有primary_photo
并返回第一个。
原因如下,解释了XPath无法正常工作的原因:Why does my XPath query (scraping HTML tables) only work in Firebug, but not the application I'm developing?