Извлечение одной строки из html-таблицы с другого веб-сайта?

#php #html #curl #xhtml #xampp

#php #HTML #curl #xhtml #xampp

Вопрос:

Я пытаюсь изучить использование curl, но пока не понимаю, как это работает в полной мере. Как я могу использовать curl (или другие функции) для доступа к одной (верхней) записи данных таблицы. Пока я могу получить только весь веб-сайт. Как я могу повторить только всю таблицу и, в частности, первую запись. Мой код:

 <?php
$ch = curl_init("http://www.w3schools.com/html/html_tables.asp");

curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);

curl_exec($ch);
curl_close($ch);
?>
 

Комментарии:

1. php.net/manual/en/class.domdocument.php

Ответ №1:

Использование curl — хорошее начало, но этого будет недостаточно, как предположил хэнки, вам нужно также использовать DOMDocument , а также вы можете включить DOMXpath .

Пример кода:

 $ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://www.w3schools.com/html/html_tables.asp');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
libxml_use_internal_errors(true);
$html = curl_exec($ch); // the whole document (in string) goes in here
$dom = new DOMDocument();
$dom->loadHTML($html); // load it
libxml_clear_errors();
$xpath = new DOMXpath($dom);
// point it to the particular table
// table with a class named 'reference', second row (first data), get the td
$table_row = $xpath->query('//table[@class="reference"]/tr[2]/td');
foreach($table_row as $td) {
    echo $td->nodeValue . ' ';
}
 

Должен выводить:

 Jill Smith 50
 

Комментарии:

1. Как мне повторить это в том же формате, то есть Джилл будет слева, Смит посередине и 50 справа от той же строки?

2. @user3517904 о, хорошо, просто опустите <br/> или замените его на ' ' (пробел)

3. @user3517904 уверен, что нет проблем!