現在有個需求要抓 http://trully6.pixnet.net/album/video/210798628 的人氣值, 如下圖
把撰寫的過程紀錄下來
先看一下這個頁的 html 結構
code 如下
include('./simple_html_dom.php'); $url = 'http://trully6.pixnet.net/album/video/210798628'; $html = file_get_html($url); // 抓 div.box-content -> dl -> dd $html = $html->find('div.box-content dl dd'); $hit = ''; $cnt = 0; foreach ($html as $element) { $cnt++; // 要的 hit 在第三組 dd 裡 if ($cnt == 3) { $hit = $element; //error_log($hit); // 目前長這樣:
其實 class="box-content" 有好幾個, 右欄的 sidebar 都是包在 box-content 下,
但 box-content 下面有 dl , dd 的, 只有人氣那塊才符合, 所以 code 可以像上面那樣寫就好
然後有幾件事要後記一下
- 要看抓回來的 element 不能直接 print_r($element), 會造成 ram 爆掉, 要用 foreach 的方式 log 出來看
- 一開始無法用 file_get_html() 取得線上那頁, 我是先存一份一起來 parse, parse 的 code 寫好後, 再試 file_get_html('線上的 url') 就可以了, 原因我也不知道...
- 其實要抓人氣值, 直接用下面的 code 就可以了, 因為那個 span id=element_hit_total_210798628 是唯一值, 但因為 pixnet 用了 <!----> 把 span id 包起來, 就 parse 不到了, 不知道是不是故意防止網頁被抓
$html = $html->find('span#element_hit_total_210798628'); foreach ($html as $ele) { error_log($ele); }
沒有留言:
張貼留言