我正在使用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'); 击>
所以我坚持如何提取链接,然后如何将其构建到管道上。任何对正确方向的帮助或推动都会非常感激。
答案 0 :(得分:1)
你去.. http://pipes.yahoo.com/pipes/pipe.info?_id=d564b802185d5777d757ed4189470941
在regex模块中使用稍微复杂的代码。除了尝试提取和分配变量
之外,通常更容易擦除您不想要的代码 plx.link.href 中的找到这个 - > JavaScript(。+)作业替换为 - > 作业
plx.link.href 中的找到这个 - > \'\); 替换为 - > 留空
代码的尾随位);需要反斜杠为'和)是控制字符串添加反斜杠 \ 使正则表达式以文本字符的形式读取它们。
这个正则表达式 a(。+?)b 意味着匹配或抓住& b并为这类事情派上用场。
答案 1 :(得分:0)
完整的URL解析并不简单,但如果有足够的约束,它就变得易于管理。
例如,如果您知道
JavaScript:OpenAssignment(
始终跟随/
,然后这样的事情可能是一个起点:
\/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.