星期六, 12月 08, 2007

Yahoo! Pipes 推出 Web Scraper

昨天Yahoo! Pipes公開「Fetch Page」模組(說穿了就是Web Scraping),這表示我可以不用再活在Feed43隨時可能扔開免費會員的恐懼之中了嗎?

...實際試用以後發現這個模組有時會說某些網頁不是HTML所以不能Parse。
不過配合Yahoo! Pipes的其他功能,這個模組仍然有不少好玩之處。
例如說,某些BSP(例如某無XO站啦...)不提供RSS全文,這時就可以Build一個Pipe來轉轉看。

作法非常簡單:


  1. 在Fetch Page的URL輸入單篇文章的URL。如果底下的debugger有fetch到資料,繼續下一步。

  2. 從原始碼找出內文被「夾」在哪些標籤或文字裡(要是獨一無二的)。

  3. 在Cut content from ... to ...輸入在2查到的標籤或文字。如果底下的debugger fetch到你想要的資料,繼續下一步。

  4. 然後用Fetch Feed模組輸入該站的RSS,將其pipe到一個Loop模組中,並在Loop中輸入一個Fetch Page:

    • URL改為feed裡的URL(通常是item.link)
    • Cut content from ... to ...輸入剛才查到的標籤或文字
    • 然後在Loop模組中選擇assign first result to feed的內文(通常是item.description)


  5. 確認output結果沒問題以後,就可以存檔然後run pipe,然後get rss就行了。

這是另外一項成果:我實際build了一個可以parse無名小站rss的pipe。
Wretch.cc Blog RSS Parser
不過實際使用時發現有些人的feed就是不能被parse(好像都是付費會員:P)...
如果你真的想看無名的全文,試試這個userscript

這個範例所使用的文章「KJ's Wiki Life: Wikia中文熱門站台(2-10月)」內文已由原作者釋放至公有領域。
--
Update: 改寫成一個Template形式的Parser。
Feed Full Text Parser

完整內文