2016-11-17 5 views
2

Я пытаюсь извлечь заголовки новостей и ссылку (href) каждого заголовка, используя приведенный ниже код, но извлечение ссылок не работает. Это только заголовок. Пожалуйста, помогите мне узнать, что не так с кодом.Извлечение href из html-страницы с помощью php

Ссылка на страницу, с которой я хочу, чтобы получить заголовок и ссылку из: http://web.tmxmoney.com/news.php?qm_symbol=BCM

<?php 
$data = file_get_contents('http://web.tmxmoney.com/news.php?qm_symbol=BCM'); 
$dom = new domDocument; 
@$dom->loadHTML($data); 
$dom->preserveWhiteSpace = true; 
$xpath = new DOMXPath($dom); 
$rows = $xpath->query('//div'); 

foreach ($rows as $row) { 

    $cols = $row->getElementsByTagName('span'); 

    $newstitle = $cols->item(0)->nodeValue; 

    $link = $cols->item(0)->nodeType === HTML_ELEMENT_NODE ? $cols->item(0)->getElementsByTagName('a')->item(0)->getAttribute('href') : ''; 

echo $newstitle . '<br>'; 
echo $link . '<br><br>'; 
} 
?> 

Заранее спасибо за помощь!

ответ

0

Попробуйте сделать это:

<?php 
    $data= file_get_contents('http://web.tmxmoney.com/news.php?qm_symbol=BCM'); 

    $dom = new DOMDocument(); 
    @$dom->loadHTML($data); 
    $xpath = new DOMXPath($dom); 
    $hrefs= $xpath->query('/html/body//a'); 

    for($i = 0; $i < $hrefs->length; $i++){ 
    $href = $hrefs->item($i); 
    $url = $href->getAttribute('href'); 
    $url = filter_var($url, FILTER_SANITIZE_URL); 

    if(!filter_var($url, FILTER_VALIDATE_URL) === false){ 
     echo '<a href="'.$url.'">'.$url.'</a><br />'; 
    } 
    } 
?> 
+0

Спасибо, что ответили. Ваш код перекликается с некоторыми ссылками с веб-страницы, но они не принадлежат к заголовкам (новостям). Код, который я вставлял в свой вопрос, эхо всех новостей (заголовки), но не ссылки соответствующего заголовка. Я попытался поиграть с вашим кодом (включая изменение $ hrefs, но это не сработало). Повторите попытку, когда у вас будет достаточно времени. Еще раз спасибо! – Tim

+0

Прошу прощения, но я не могу получить доступ к веб-странице, поэтому я не могу проверить код. –

0

Я нашел решение. Вот оно:

<?php 

$data = file_get_contents('http://web.tmxmoney.com/news.php?qm_symbol=BCM'); 
$dom = new domDocument; 
@$dom->loadHTML($data); 
$dom->preserveWhiteSpace = true; 
$xpath = new DOMXPath($dom); 
$rows = $xpath->query('//div'); 

foreach ($rows as $row) { 

    $cols1 = $row->getElementsByTagName('a'); 

    $link = $cols1->item(0)->nodeType === XML_ELEMENT_NODE ? $cols1->item(0)->getAttribute('href') : ''; 

    $cols2 = $row->getElementsByTagName('span'); 

    $title = $cols2->item(0)->nodeValue; 
    $source = $cols2->item(1)->nodeValue; 

echo $title . '<br>'; 
echo $source . '<br>'; 
echo $link . '<br><br>'; 

} 
?> 
Смежные вопросы