0

これはhtmlページです:

<div class="gs_ri">
   <h3 class="gs_rt">
     <span class="gs_ctc">
     <span class="gs_ct1">[BOOK]</span>
     <span class="gs_ct2">[B]</span></span>
     <a href="http://example.com" onmousedown="">Title</a></h3>
<div class="gs_a">A</div>
<div class="gs_rs">B</div>
<div class="gs_fl"><a href="">C</a> <a href="">D</a> <a href=""</a></div></div></div>  
<div class="gs_r"><div class="gs_ggs gs_fl"><button type="button" id="gs_ggsB2" class="gs_btnFI gs_in_ib gs_btn_half">
     <span class="gs_wr"><span class="gs_bg"></span>
     <span class="gs_lbl"></span>
     <span class="gs_ico"></span></span></button>
<div class="gs_md_wp" id="gs_ggsW2"><a href="http://example.pdf" onmousedown=""

ノードを決定するのに少し混乱しています。

http://example.com手に入れたいTitle

私はそれらを得るために2つの方法があると思いました:

の兄弟です<span>:

 foreach($html->find('span[class=gs_ctc2] ') as $link){
    $link = $link->next_sibling();
    echo $link->plaintext;
    echo $link->href;
}

しかし、それは機能しません。

2 番目は、私が<h3 class="gs_rt">親として取得するため、最後の子の兄弟です。

foreach($html->find('h3[class=gs_rt] a') as $link){
    $link = $link->last_child()->next_sibling();
    echo $link->plaintext;
    echo $link->href;
}

それも機能しません。node dom tree についてはまだ理解できていないと思います。

4

2 に答える 2

1

兄弟を選択する必要はありません。

あなたh3[class=gs_rt] aはすでにそれぞれの<a>タグをターゲットにしています。したがって、そこから目的の値を抽出するだけです。ただし、そのセレクターは次のように単純化できます。

foreach($html->find('h3.gs_rt a') as $link){
    echo $link->plaintext;
    echo $link->href;
}

編集

コメントに関しては、あなたが望むのはこのようなものだと思いますが、よくわかりませんし、上記のコードはかなり混乱しています(適切なインデントを使用してください!)

foreach($html->find('h3.gs_rt') as $block){
    $link = $block->find( 'a' );
    echo $link->plaintext;
    echo $link->href;

    $otherLink = $block->find( 'div[class=gs_md_wp] a' );
    // do stuff with that $otherLink
}
于 2012-09-26T14:57:15.497 に答える
0

id を href に追加する

<a id="myid" href="http://example.com" onmousedown="javascript:get_title('#myid')">Title</a></h3>

function get_title(i){
var h =$(i).attr('href');  
var t =$(i).text(); 
 alert('the link is (' + h + ' ) and the title is (' + t + ' )');
        }
于 2012-09-26T15:11:47.440 に答える