2016-04-29 11 views
1

ページのすべてのリンクと名前をリストしようとしています。私ははxpathの空白の出力を返します

$url="http://www.ciim.in/top-pr-dofollow-social-bookmarking-sites-list-2016"; 
$html = file_get_contents($url); 

以下のコードのためのバンク出力を得続けると、ノードの一部が

$nodes = $my_xpath->query('//table[@class="social_list"]/tbody/tr'); 

    foreach($nodes as $node) 
    { 

    $title = $my_xpath->evaluate('td[1]/a"]', $node); 
    $link = $my_xpath->evaluate('td[1]/a/@href"]', $node); 

    echo $title.",".$link."<br>";   

    } 

ノートは右のサイトにクリックでは無効であり、私はクロームの要素のコードを検査する開発ツールを使用します

答えて

2

クエリforeachの内部

$nodes = $xpath->query('//table[@class="social_list"]/tbody/tr/td/a'); 

よりも効率的になります

'//table[@class="social_list"]/tbody/tr[td/a]' 

は、タイトルとURLを取得するには、[編集]

$title = $node->textContent; 
$href = $node->getAttribute('href'); 

:私はこのコードをテストしてみた テーブル全体を検索する

//Query from parent div 
$nodes = $xpath->query('//div[@class="table_in_overflow"]'); 

foreach ($nodes as $node) { 
    $a = $node->getElementsByTagName("a"); 
    foreach($a as $item) { 
     $href = $item->getAttribute("href"); 
     $text = $item->nodeValue; 
    } 
} 
+0

良い! +1 – splash58

+0

働いて...素晴らしい! –

1

あなたのセレクタ'td[1]/a"]''td[1]/a/@href"]'の終わりに"]を末尾、そう簡単にtd[1]/atd[1]/a/@hrefようにこれらを変更しています。

さらにtrtdaで選択すると、xpathを改善することができます。これにより、リンクのないヘッダーは無視されます。 '//table[@class="social_list"]/tbody/tr'

+1

すでにコードにあります –

+1

あなたのコードには、「終了」という広告はありません。私はこれが何であるべきかわかりません。しかし、あなたは空白の出力しか持たないのですか、最初の行だけですか? –

関連する問題