1

我正在使用 Yahoo Pipes 构建一个抓取工具,它可以通过 xPath 抓取我们公司的微型站点,并生成一个 RSS 提要,然后我可以将其嵌入到主站点中。

到目前为止,我已经从页面上抓取了职位名称和位置,但我无法将这些项目链接到微型网站。

到目前为止,这是我的管道: http://pipes.yahoo.com/pipes/pipe.info?_id= 2bb5b8fedd0064b64d0e8861e3fc8fd5

我想我需要从每个节点中提取 href 链接,然后应用正则表达式,但我真的无法理解它。

该链接在代码中如下所示: www2.jobs.badenochandclark.ch/JavaScript:OpenAssignment('a960c93a-11fe-4751-bc27-83a48429c3ba',%20'/Jobs/Details/a960c93a-11fe-4751-bc27-83a48429c3ba ');

但我正在努力生成一个基本上可以做到这一点的正则表达式: www2.jobs.badenochandclark.ch/ JavaScript:OpenAssignment('a960c93a-11fe-4751-bc27-83a48429c3ba',%20' /Jobs/Details/a960c93a-11fe -4751-bc27-83a48429c3ba ');

所以我坚持如何提取链接,然后如何将其构建到管道上。任何朝着正确方向的帮助或推动将不胜感激。

4

2 回答 2

1

给你.. http://pipes.yahoo.com/pipes/pipe.info?_id=d564b802185d5777d757ed4189470941

在正则表达式模块中使用稍微不那么复杂的代码。删除您不想要的代码通常比尝试提取并分配给变量更容易

plx.link.href中找到 this-> JavaScript(.+)Jobs 替换为-> jobs

plx.link.href中 找到这个-> \'\); 替换为->留空

代码的尾随位 '); 需要反斜杠作为')是控制字符添加反斜杠 \使正则表达式将它们从字面上读取为文本字符。

这一点正则表达式a(.+?)b 意味着匹配或抓取 a 和 b 之间的所有内容,并且对于这类事情非常有用。

于 2012-06-13T02:09:04.103 回答
0

成熟的 URL 解析并不简单,但只要有足够的限制,它就会变得易于管理。

例如,如果你知道

  1. 总是JavaScript:OpenAssignment(跟在 a/之后,
  2. 第一个参数始终是引号中的十六进制+破折号字符串,
  3. 第二个参数(至少是您需要的部分)也在引号中,
  4. 并且您可以丢弃“函数”之后的 URL 的剩余部分

那么这样的事情可能是一个起点:

\/JavaScript:OpenAssignment\([^'"]*['"][0-9a-fA-F\-]+['"][^,)]*,[^'")]*['"]([0-9a-fA-F\-]+)['"].*

然后,$1将包含您希望保留的匹配项。解释如下。

\/                           Slashes need to be escaped (usually).
JavaScript:OpenAssignment    Our function of interest.
\(                           Parentheses need to be escaped too.
[^'"]*                       We're looking for a quote next, so ignore any
                             string of non-quotes, e.g. %20.
['"]                         A quote character.
[0-9a-fA-F\-]+               A hexadecimal-and-dashes string.
['"]                         A quote character.
[^,)]*                       We're looking for a comma next, so ignore any
                             string of non-quotes, e.g., again, %20.
,                            A comma character.
[^'"]*                       We're looking for a quote again, so ignore any
                             string of non-quotes, e.g. %20.
['"]                         A quote character.
([0-9a-fA-F\-]+)             A hexadecimal-and-dashes string, this time captured.
['"]                         A quote character.
.*                           The rest of the string that we don't care about.
于 2012-06-12T14:20:17.043 回答