我应该使用Yahoo-Pipes来抓取div的内容吗?

时间:2009-07-08 00:36:55

标签: screen-scraping yahoo-pipes

假设:

  • 网址 - http://www.contoso.com/search.php?q= {param}返回:

    -html-
    --body-
    {...}
    --- div id ='foo'-
    ---- div id ='page1'/ -
    ---- div id ='page2'/ -
    ---- div id ='page3'/ -
    ---- div id ='pageN'/ -
    --- / div-
    {...}
    - /体佩
    - / HTML -

通缉:

  • div id ='foo'的innerHtml必须由客户端获取(即Javascript)。
    • 它将被拆分为不连续的项目(即div id ='page1'to div id ='pageN')。
  • API Throttling可防止服务器端代码预取数据,因此必须在客户端上放置解析和操作负担。

问题:

  • Yahoo-Pipes可以帮助格式化数据以便于消费吗?
    • 缺少DOM解析器让我停下来。
  • 是否有可用作示例的现有管道?

2 个答案:

答案 0 :(得分:8)

您可以使用YQL模块,它允许您获取任意URL,然后使用XPath解析它们。示例YQL查询:

select * from html where url="http://finance.yahoo.com/q?s=yhoo" and
  xpath='//div[@id="yfi_headlines"]/div[2]/ul/li/a'

答案 1 :(得分:4)

是的,这对Y来说是可行的!管道。您只需要“操作员”部分中的两个模块:

首先获取内容的“子元素”。

然后只需使用“Regex”模块提取div内容并通过您网站的JSON获取:

搜索:

^.*?<div id="foo">(.*?)</div>.*?$

替换:

$ 1