1

私は Yahoo Pipes を使用して、xPath 経由で会社のマイクロ サイトをスクレイピングし、メイン サイトに埋め込むことができる RSS フィードを生成するスクレーパーを構築しています。

これまでのところ、ページから役職と場所をスクレイピングすることはできましたが、アイテムをマイクロサイトにリンクすることはできません.

これまでのところ、私のパイプは次のとおりです

各ノードからhrefリンクを抽出してから正規表現を適用する必要があると思いますが、本当に理解できません。

コード内のリンクは次のようになります: www2.jobs.badenochandclark.ch/JavaScript:OpenAssignment('a960c93a-11fe-4751-bc27-83a48429c3ba',%20'/Jobs/Details/a960c93a-11fe-4751-bc27-83a48429c3ba ');

しかし、基本的にこれを行う正規表現を生成するのに苦労しています: -4751-bc27-83a48429c3ba ');

そのため、リンクを抽出する方法と、それをパイプに構築する方法に固執しています。正しい方向への助けや微調整は本当にありがたいです。

4

2 に答える 2

1

どうぞ.. http://pipes.yahoo.com/pipes/pipe.info?_id=d564b802185d5777d757ed4189470941

regex モジュールで少し複雑でないコードを使用しました。抽出して変数に割り当てようとするよりも、不要なコードを消去する方が簡単なことがよくあります

plx.link.hrefでこれを見つけます-> JavaScript(.+)Jobs を置き換えます-> jobs

plx.link.hrefでこれ を見つけます-> \'\); 置換 ->空白のままにします

コードの末尾のビット '); 'および)は、バックスラッシュを追加する制御 文字であるため、バックスラッシュが必要です\正規表現はそれらをテキスト文字としてリテラルに読み取ります。

この少しの正規表現a(.+?)b は、a と b の間のすべてを一致または取得することを意味し、この種のことに非常に役立ちます。

于 2012-06-13T02:09:04.103 に答える
0

本格的な URL 解析は単純ではありませんが、十分な制約があれば扱いやすくなります。

たとえば、あなたが知っているなら

  1. JavaScript:OpenAssignment(常に続く/
  2. 最初の引数は常に引用符で囲まれた 16 進数 + ダッシュの文字列であり、
  3. 2 番目の引数 (少なくとも必要な部分) も引用符で囲まれていること、
  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 に答える