尝试使用YQL xpath从页面获取图像

时间:2014-07-19 14:02:20

标签: javascript xpath yql

我正在尝试使用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>

1 个答案:

答案 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?