iT邦幫忙

0

抓取網站資料(php)

目前已了解如何抓取純html網頁資料

但如果像http://tv.udn.com/shows/index.shtml 想抓取節目表有甚麼方法可以做到呢?

1 個回答

12
逮丸逮丸
iT邦大師 1 級 ‧ 2013-09-26 12:15:35
最佳解答

你只要會怎麼解析JSON,
不需去解析該網頁,
就可獲得你想要的資料:

<pre class="c" name="code">[
  {
    "group": [
      {
        "link": "http://tv.udn.com/news/live.shtml",
        "endTime": "0030",
        "beginTime": "0000",
        "name": "就要體育新聞"
      },
      {
        "link": null,
        "endTime": "0100",
        "beginTime": "0030",
        "name": "生活Enjoy-義大利餃+西谷米粥"
      },
...
      {
        "link": "http://tv.udn.com/news/live.shtml",
        "endTime": "0000",
        "beginTime": "2300",
        "name": "2300夜線新鮮事"
      }
    ],
    "day": "Sun",
    "date": "2013/09/29"
  }
]

那一個網頁怎麼看都看不到這資料在何處,
必須觀察瀏覽器在背後還抓了哪些東西,
就會發現那個畫出JSON的網址了!

剛剛也好奇去試了一下,用$.getJSON抓這個資料會有cross domian的問題,請問大大是怎麼抓的?

應該是不能用前端去抓,
通常是在server端去抓下來後,
再用工具去解析,
所以沒用到jQuery。

我是先用 wget 到該 JSON 網頁,
再用 觀看 JSON 的新工具:jq 所提的 jq,
就只是排得比較好看而已。

如果要自行做提供節目表的網站或者App,
應該不會直接指到該網址,
可能會把該JSON抓到自己的網站,
讓自己做的前端或App去讀自己已抓到的JSON。
該JSON檔可能一週才會變動,
自己只要一天重抓一次,
才不會讓原網站覺得
怎麼一堆的referer非本站卻一直來請求該檔案。

抓JSON現有的檔案容易,
但怎麼做好前端或APP,
才看得出設計的功力。

我要發表回答

立即登入回答