2014-07-19 33 views
0

我试图使用YQL获取imdb图像的src。我不确定XPath应该是什么 - 它是Firebug给你的XPath吗?你能告诉我为什么这会失败,什么是正确的XPath?谢谢试图从使用YQL 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

OK,加上安装FirePath插件,并得到了这个XPath,但仍然没有喜悦:(.//*[@id= 'main']/div/div [2]/table/tbody/tr [1]/td [1]/a/img – SIndhu

回答

1

那么,这将有所帮助,如果你会提到你真的想要回来。现在,我会简单地假设你正在寻找列表中的第一张照片。您可以使用以下XPath获取它,该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?

+0

您提供的xpath对我有用!感谢解释链接:) – SIndhu

+0

Any想法如何从http://www.amazon.in/Seiko-Premier-Analog-Blue-Watch/dp/B012T413GO?_encoding=UTF8&ref_=cm_sw_r_wa_apa_i_5c5uzbQG5A293 fecth形象和元描述? –