无法获得正确的xpath查询从网页中检索图像

时间:2011-02-19 14:49:38

标签: html xml xpath yql

我正在使用C#创建一个rss服务,我们从其中检索rss新闻的网站之一没有与其图像的直接链接但如果我们转到他们的直接链接页面,我们可以通过帮助找到一张图片firebug并在firebug中使用“XPATH”功能我可以获得该特定图片的XPATH查询,但似乎xpathquery无效,因为我已检查其xpathquery: HtmlAgilityPack和雅虎YQL

这是我从firebug中检索到的xpath:

//body
  /form
   /table[2]
    /tbody
     /tr[2]
      /td
       /table
        /tbody
         /tr
          /td
           /table
            /tbody
             /tr
              /td
               /img

这是我的YQL

select * 
from html 
where url="http://isna.ir/ISNA/PicView.aspx?Pic=Pic-1718372-1&Lang=P" 
      and xpath='//body
                  /form
                   /table[2]
                    /tbody
                     /tr[2]
                      /td
                       /table
                        /tbody
                         /tr
                          /td
                           /table
                            /tbody
                             /tr
                              /td
                               /img'

这个网站我想从中检索图片:

http://isna.ir/ISNA/PicView.aspx?Pic=Pic-1718372-1&Lang=P

因为我的Xpath能力太弱而且我只知道它的一些事情我不得不依赖于诸如firebug之类的工具......实际上我只知道从选定的html标签返回xpath的firebug

所以我在这里有两个问题:

1 - 请你给我写正确的xpath或建议我如何写一个正确的xpath?

2 - 是否有其他工具如firebug来显示与html标签相对应的xpath?

问候。

1 个答案:

答案 0 :(得分:2)

我得到了答案: HtmlAgilityPack不支持xpathQuery中的[tbody]和[html]标记,所以我重写了我的查询,如:

//*[@id='Table2']/tbody/tr/td/table/tr/td/img

//body/form/table[2]/tr[2]/td/table/tr/td/table/tr/td/img

这是我从追踪HtmlAgilityPack

获得的
/html[1]/body[1]/table[2]/tr[2]/td[1]/table[1]/tr[1]/td[1]/table[1]/tr[1]/td[1]/img[1]

因为以上所有代码都适用于HtmlAgilityPack

和FYI还有另一个名为firepath的firebug,它会给你简明的查询。

问候。