昨天Yahoo! Pipes公開「Fetch Page」模組(說穿了就是Web Scraping),這表示我可以不用再活在Feed43隨時可能扔開免費會員的恐懼之中了嗎?
...實際試用以後發現這個模組有時會說某些網頁不是HTML所以不能Parse。
不過配合Yahoo! Pipes的其他功能,這個模組仍然有不少好玩之處。
例如說,某些BSP(例如某無XO站啦...)不提供RSS全文,這時就可以Build一個Pipe來轉轉看。
作法非常簡單:
- 在Fetch Page的URL輸入單篇文章的URL。如果底下的debugger有fetch到資料,繼續下一步。
- 從原始碼找出內文被「夾」在哪些標籤或文字裡(要是獨一無二的)。
- 在Cut content from ... to ...輸入在2查到的標籤或文字。如果底下的debugger fetch到你想要的資料,繼續下一步。
- 然後用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)
- URL改為feed裡的URL(通常是item.link)
- 確認output結果沒問題以後,就可以存檔然後run pipe,然後get rss就行了。
這是另外一項成果:我實際build了一個可以parse無名小站rss的pipe。
不過實際使用時發現有些人的feed就是不能被parse(好像都是付費會員:P)...
如果你真的想看無名的全文,試試這個userscript。
這個範例所使用的文章「KJ's Wiki Life: Wikia中文熱門站台(2-10月)」內文已由原作者釋放至公有領域。
--
Update: 改寫成一個Template形式的Parser。
Feed Full Text Parser
完整內文