Yahoo! Pipes の XPath Fetch Page でフィードを出力してないサイトからRSS を配信する のつづき
1. パイプをどのサイトでも使えるように変更する
前回、フィードを配信していない「特定のサイト」から RSS を配信した。
今回は、上記のパイプを、どのサイトでも使えるように変更した。
例えば、Yahoo!モバゲー の場合、「○○○○ さんの日記」のページを対象としてパイプを実行する。パイプのフィールドに入力する値は以下の通り。
ブログの各記事へリンクを含むページの URL | http://yahoo-mbga.jp/XXXXXX/diary |
ブログのタイトル一覧を取得するXPath | //li[@class="lv2-lay"]/a |
ブログの内容を取得するXPath | //li[@class="blk4-lay"] |
GREE の場合、「日記」のページを対象としてパイプを実行する。
ブログの各記事へリンクを含むページの URL | http://gree.jp/XXXXXX/blog |
ブログのタイトル一覧を取得するXPath | //h1[@class="title"]/a |
ブログの内容を取得するXPath | //*[@class="maincol"]//*[@class="content"] |
記事から削除する内容(正規表現) | <div class="footlink">.*?</div> |
Amebaなう の場合は、以下の通り。
ブログの各記事へリンクを含むページの URL | http://now.ameba.jp/XXXXXX/ |
ブログのタイトル一覧を取得するXPath | //span[@class="status"]/a |
ブログの内容を取得するXPath | //li[@class="now"]//p[@class="content"] |
記事から削除する内容(正規表現) | <span class="status">.*?</span> |
以下、作成手順を述べる。
2. モジュールを独立させる
最初に、ウェブページから、各記事のタイトルと URL を含むパイプを独立させる。
前回作成したパイプのソースを開き、Save a copy により、新しいパイプを作成する。
Loop モジュールを削除し、Rename モジュールから Pipe Output へパイプを繋ぐ。
ユーザからの入力を受け付ける Input モジュール
対象となるブログの URL と、各記事の URL とタイトルを指定するための XPath をユーザが指定できるように変更する。
- User Input >
- URL Input モジュール
- Text Input モジュール
を配置する。
Input 系のモジュールの
- Name フィールドは、作成したパイプのフォームのパラメータ名となる。
- Prompt は、フォームにおけるフィールドのラベル名となる。
- Position は、フォームにおけるフィールドが表示される順番を表す。
次に、Input モジュールから、XPath Fetch Page モジュールのフィールドにパイプを繋げる。
独立させたパイプは、以下のもの。
3. 作成したモジュールを配置する
先ほどと同じく、前回作成したパイプのソースを開き、Save a copy により、新しいパイプを作成する。
- XPath Fetch Page モジュール
- Rename モジュール
を削除し、上記で作成したモジュールと置きかえる。
自分で作成したパイプは、
- My pipes > ブログ記事のタイトルと URL の一覧を取得する
より配置する。
このとき、ユーザからの入力を受け入れるために、User Input より、URL Input, Text Input モジュールを置く。
Loop モジュールで使う、XPath もユーザの入力を受け取るようにする。
4. Regex モジュールで不必要な文字を削除する
上記に加えて、各記事の内容から、特定の文字列を削除するために Regex モジュールを追加する。この際、正規表現で削除対象を指定する。
Operator > Regex を配置し、Loop モジュールの出力を Regex モジュールに入力する。 User Inputs より、Text Input を配置し、Regex モジュールの replace に繋ぐ。
これで出来上がり。