列出網頁連結的問題

請問一下,小弟在練習用 userscript 擋廣告腳本,
使用下面方式取得所有連結並判斷是否為 ad 連結.


// 取得所有連結
lists = document.getElementsByTagName('a');
for( i = 0; i < lists.length; i++) {
a = lists[i];
if( a.herf.match( "ad_*")) {
adlist += a + '\n';
}
}


結果發現找到的結果,與直接比對網頁原始碼的結果數量並不一樣,
都會少了很多個沒列出來,請問是小弟語法的問題嗎?

那些漏掉的連結一樣都是 href="ad_xxxxxx"

請問小弟要怎麼改才會全部都列出來,謝謝!
2013-03-10 16:18 發佈
文章關鍵字 網頁連結 問題
vantien wrote:
結果發現找到的結果,與直接比對網頁原始碼的結果數量並不一樣,
都會少了很多個,看了一下漏掉的連結,發現都是在很多層 div 下的,


漏掉的是不是在iframe裡面?

--------------------------------------

擋廣告為什麼不用Adblock就好

先阻擋會載入廣告的.js
剩下的非.js載入的廣告再隱藏元素(隱藏元素只是讓他看不到而已,沒辦法加快頁面載入,反而要多花額外的時間處理,所以要先擋.js)

因為是在學習寫 userscript 腳本,
所以想說找一些簡單的功能練習一下。 ^^

網頁內都沒有 iframe ,

我用 01 的網站試了一下也是一樣,
會缺少一些連結沒被列出來.


var a, links, i;
links = document.getElementsByTagName('a');
for( i = 0; i < links.length; i++) {
a = links[i];
if( a.href.match( "adredir.php*")) {
adLists[removed] += i + ' : ' + a + '\n';
}
}


看 adLists 裡的內容,跟查看原始碼時用搜尋出來的數量並不一致。
所以感覺很奇怪。

例如 01 首頁跑出來的 adLists 只有 13 筆資料.
3 : http://www.mobile01.com/adredir.php?id=15565
50 : http://www.mobile01.com/adredir.php?id=15818
51 : http://www.mobile01.com/adredir.php?id=37164
52 : http://www.mobile01.com/adredir.php?id=37318
53 : http://www.mobile01.com/adredir.php?id=37402
54 : http://www.mobile01.com/adredir.php?id=37404
86 : http://www.mobile01.com/adredir.php?id=35070
87 : http://www.mobile01.com/adredir.php?id=35928
88 : http://www.mobile01.com/adredir.php?id=37266
137 : http://www.mobile01.com/adredir.php?id=37437
138 : http://www.mobile01.com/adredir.php?id=37387
145 : http://www.mobile01.com/adredir.php?id=37466
146 : http://www.mobile01.com/adredir.php?id=37230

但是看網頁原始碼按 Ctrl+F 找 href="adredir.php 的數量是有 16 個
找 adredir.php 有 22 個. 不知道為什麼會漏掉那些連結??
Today is not my day.
vantien wrote:
但是看網頁原始碼按 Ctrl+F 找 href="adredir.php 的數量是有 16 個
找 adredir.php 有 22 個. 不知道為什麼會漏掉那些連結??


稍微看了一下,應該是沒有少的吧....

少的3個href="adredir.php是在頁面載入完後被flash取代掉了吧

你比較一下原始碼和現在顯示頁面的原始碼(Firefox可以裝Firebug,我覺得蠻好用的;Chrome的話內建的就很好用了)有什麼不同大概就知道了,網頁的元素可以動態加入,所以看原始的程式碼是不準的
nsps5606 wrote:
少的3個href="adredir.php是在頁面載入完後被flash取代掉了吧


嗯嗯,如果沒看網頁原始碼比對,直接算頁面上的廣告數,
少的就是那幾個被 flash 取代的 ad.

那應該如何做才能正確的把全部的值都抓出來呢?
因為漏掉的那幾個就沒辦法把它變成空白不顯示了...
有點摸不著頭緒...

謝謝!
Today is not my day.

vantien wrote:
那應該如何做才能正確的把全部的值都抓出來呢?
因為漏掉的那幾個就沒辦法把它變成空白不顯示了...


就看你覺得要讓哪個東西消失,才能讓廣告看不到。
像01首頁不是有 <div class="ad-a1">、<div class="ad-c"> 之類的就可以用classname來判斷,哪裡有漏就觀察那裏的原始碼,再想規則去擋(不過既然都抓出名稱了,也不用再去判斷什麼了吧,直接針對那幾個擋比較快)
嗯嗯,了解,那我就朝這個方向處理吧。
chrome 的檢查元素,功能果然很強大,什麼資訊都在裡面看的到。
感謝大大的解說。

Today is not my day.
內文搜尋
X
評分
評分
複製連結
Mobile01提醒您
您目前瀏覽的是行動版網頁
是否切換到電腦版網頁呢?