身為資深鄉民,每個時期關注不同的看版(一路從高中、黑特、八卦、手機、路跑、買房到…媽寶…),通常真正有用的訊息,來自較多人推文討論或者乎應的文章。當優質文章被看完以後,腦袋會進入資訊缺乏的焦慮,趨使著手指,不斷想辦法找出更多有趣訊息。
手機版本的 PTT 軟體,則是看準了使用者對新訊息渴求,預設會提供不同看版的熱門文章。這些本來不在我關注主題範圍內的文章,也是這麼有趣,於是一點一滴的佔據我更多的時間。
因此,為了少花一點時間在 PTT 隨機漫步,我先去想『我到底想要看什麼?』接著,想辨法主動先篩選出我有興趣的資訊,避開軟體給我的、有趣但我其實並不關心的議題。
本來想要試著用一些 PTT 爬蟲,但後來發現,PTT 網頁版的功能已十分完整,甚至還有搜尋的功能,使用 Google 試算表裡簡單的 ImportXML 函數,就可以針對特定看板,用關鍵字或推文數,主動篩選出我們可能較關心且能增長見聞的內容。
方法
PTT網頁版提供結構化的資料,因此可以用 ImportXML 配合 XPath,取出我們需要的資料位置。而網頁版的搜尋功能,則是讓我們更快找到想要的文章。以棒球版為例,用以下的網址https://www.ptt.cc/bbs/Baseball/search?q=黑豹+recommend:40
,就能找到標題有黑豹旗,且推文數在 40 以上的文章。
直接偷看一下每一篇文章,其 HTML 都是如下的結構:
<div class="r-ent">
<div class="nrec"><span class="hl f1">爆</span></div>
<div class="title">
<a href="/bbs/Baseball/M.1606610530.A.0FA.html">[LIVE] 109 中信盃黑豹旗 11/29賽程</a>
</div>
<div class="meta">
<div class="author">hicker</div>
<div class="article-menu">
<div class="trigger">⋯</div>
<div class="dropdown">
<div class="item"><a href="/bbs/Baseball/search?q=thread%3A%5BLIVE%5D+109+%E4%B8%AD%E4%BF%A1%E7%9B%83%E9%BB%91%E8%B1%B9%E6%97%97+11%2F29%E8%B3%BD%E7%A8%8B">搜尋同標題文章</a></div>
<div class="item"><a href="/bbs/Baseball/search?q=author%3Ahicker">搜尋看板內 hicker 的文章</a></div>
</div>
</div>
<div class="date">11/29</div>
<div class="mark">M</div>
</div>
</div>
因為都有設定有意義的 className,我們可以直接用 XPath 的 class 篩選找到需要的欄位。例如,使用 //div[@class='title']/a
,就可以選中<div class="title"><a><a/></div>
這個結構。
//div[@class='title']/a
中的//
,指的是在文件的任何地方出現指定結構,都會被找到。相對的,如果只有單斜線/
,表示要從文件的第一層 (root node) 開始找。詳細請看 W3schools 的介紹。
直接在 Google sheet 中輸入以下的公式,就可以選出頁面裡所有的標題。
=importxml("https://www.ptt.cc/bbs/Baseball/search?q=黑豹+recommend:40","//div[@class='title']/a")
結果如下:
同理,使用以下的 XPath,就可以找到我們想要的其他資訊:
項目 | HTML | XPath |
---|---|---|
推文數 | <div class="nrec"><span class="hl f1">爆</span></div> |
//div[@class=’nrec’]” |
標題 | <div class="title"><a href="...">標題</a></div> |
//div[@class=’title’]/a |
網址 | <div class="title"><a href="網址">標題</a></div> |
//div[@class=’title’]/a/@href |
作者 | <div class="author">hicker</div> |
//div[@class=’author’] |
最後就是匯整了。把所有項目組合到同一張試算表,就可以取出我們可能會有興趣的資料。只要再點擊網址,就可以閱讀這些文章。
使用情境
- 特定看板的熱門文章。當然要把看板名稱和搜尋獨立出來。
- 我覺得非常有用的、二手物搜尋!有人賣馬上可以看到。
有興趣的朋友可以直接複製一份文件來玩玩。
更進一步
配合 Glide,就可以把上面的試算表變成手機 app!如果有時間,再寫個下篇和大家分享。
沒有留言
張貼留言