【问题标题】:Selecting table data from a webpage从网页中选择表格数据
【发布时间】:2011-04-26 18:29:30
【问题描述】:

我正在尝试使用 YQL - http://www.empireonline.com/search/default.asp?search=Dragonheart(作为示例)从帝国杂志网站(电影评论(热门匹配)表)获取结果,并且我正在使用 firebug 获取 xpath,但它没有似乎想要返回结果。这是我正在使用的;

select * from html where url='http://www.empireonline.com/search/default.asp?search=cars' and xpath='/html/body/table[3]/tbody/tr[5]/td[2]/table[2]/tbody/tr/td/table[2]/tbody/tr/td/table[2]'

现在好像可以用了;

select * from html where url='http://www.empireonline.com/search/default.asp?search=cars' and xpath='//table'

但我不需要扔掉一大堆数据。

【问题讨论】:

  • 这是一个常见问题解答:浏览器向 DOM 添加强制性 HTML 元素(如 headtbody),这些 tbody 不存在于源代码中。
  • 我得到的最好的是以下 - SELECT * FROM html WHERE url="empireonline.com/search/default.asp?search=cars" 和 xpath="//table[3]//table[2]//table[2] //表[2]"
  • 那么你的问题解决了吗?听起来您评论中的 XPath 正是您所需要的,对吧?
  • 我认为主要问题在于您要解析的源 html。它被声明为 HTML 4.0 过渡,而且看起来格式不正确。
  • 是的,现在遇到了各种各样的问题:Z

标签: xpath web-scraping yql


【解决方案1】:

您只需要在制作适当的 XPath 查询时小心。下面通过首先定位“电影评论(热门匹配)”段落获取该 HTML 表中列出的每个评论的链接和名称,然后导航到电影列表。

SELECT href, strong
FROM html
WHERE url   = 'http://www.empireonline.com/search/default.asp?search=Thor'
AND   xpath = '
    //p[.="Film Reviews (Popular Matches)"]
    /ancestor::table[1]
    /following-sibling::table[1]
    //td[2]/a
'

(Try this query in the YQL console.)

【讨论】:

    猜你喜欢
    • 2011-01-15
    • 2011-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-20
    • 1970-01-01
    • 2014-08-16
    相关资源
    最近更新 更多