1

いくつかのWebサイトをスクレイピングしているので、ページ上のAdobeFlash広告を削除したいと思います。私はそれらが「オブジェクト」であると仮定するので、私はしました:

window.setInterval(MyFunction, 900);

function MyFunction() { 

  $('object').remove();

alert('test'); 

} 

アラートが表示されますが、「オブジェクト」は削除されません。そんなことがあるものか?他に何を試すことができますか?

これは、広告(の1つ)がどのように見えるかです:

<script src="http://ad.nl.doubleclick.net/adj/P4442.Nu.nl/home;sz=468x60,728x90;dcopt=ist;tile=1;kw=;tt=1000;gr=-5;rg=0;nk=0;u=m6re350ar;;ord=4884951752610505?" type="text/javascript" style="position: relative; margin: 0px; padding: 0px; width: auto; height: auto; border: none; float: left; background-image: none; background-position: initial initial; background-repeat: initial initial;"></script>
4

2 に答える 2

1

Flash 広告<embed>で の代わりに要素が使用されている可能性があり<object>ます。たとえば、http://www.drudgereport.com/を数回ロードしようとしたところ、さまざまな時点で両方の要素タイプが見つかりました。ログ$('object').length$('embed').length. それらをすべて削除するには、次を使用できます。

$('embed,object').length

そのため、関数にいくつかのロギング コードを追加すると、次のようになります。

function MyFunction() {
    console.log( 'Objects:', $('object').length );
    console.log( 'Embeds:', $('embed').length );
    $('embed,object').remove();
    console.log( 'Objects after:', $('object').length );
    console.log( 'Embeds after:', $('embed').length );
}

0.9 秒のタイムアウトでは不十分な可能性もあります。コードを実行して少し待った後、これらのconsole.log()呼び出しをもう一度試して、結果を確認できます。

于 2013-03-23T09:41:14.790 に答える
0
setTimeout(function() {
    $('object').remove();  
}, 900);
于 2013-03-23T09:24:14.837 に答える