Выбор конкретного div с внешней веб-страницы с помощью CURL - PullRequest
9 голосов
/ 01 апреля 2010

Привет, может кто-нибудь помочь мне, как выбрать определенный div из содержимого веб-страницы.

Допустим, я хочу получить div с id="wrapper_content" с веб-страницы http://www.test.com/page3.php.

Мой текущий код выглядит примерно так: (не работает)

//REG EXP.
$s_searchFor = '@^/.dont know what to put here..@ui';    

//CURL
$ch = curl_init();
$timeout = 5; // set to zero for no timeout
curl_setopt ($ch, CURLOPT_URL, 'http://www.test.com/page3.php');
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
if(!preg_match($s_searchFor, $ch))
{
  $file_contents = curl_exec($ch);
}
curl_close($ch);

// display file
echo $file_contents;

Итак, я хотел бы знать, как я могу использовать выражения reg, чтобы найти определенный div и как удалить остальную часть веб-страницы, чтобы $file_content содержал только div.

Ответы [ 3 ]

15 голосов
/ 01 апреля 2010

HTML не является регулярным , поэтому не следует использовать регулярные выражения. Вместо этого я бы порекомендовал парсер HTML, такой как Simple HTML DOM или DOM

Если вы собираетесь использовать Simple HTML DOM, вы должны сделать что-то вроде следующего:

$html = str_get_html($file_contents);
$elem = $html->find('div[id=wrapper_content]', 0);

Даже если вы использовали регулярные выражения, ваш код все равно не будет работать правильно. Вам нужно получить содержимое страницы, прежде чем вы сможете использовать регулярные выражения.

//wrong
if(!preg_match($s_searchFor, $ch)){
    $file_contents = curl_exec($ch);
}

//right
$file_contents = curl_exec($ch); //get the page contents
preg_match($s_searchFor, $file_contents, $matches); //match the element
$file_contents = $matches[0]; //set the file_contents var to the matched elements
4 голосов
/ 27 мая 2013
include('simple_html_dom.php');
$html = str_get_html($file_contents);
$elem = $html->find('div[id=wrapper_content]', 0);

Скачать simple_html_dom.php

0 голосов
/ 01 апреля 2010

проверьте наш hpricot, он позволяет элегантно выбирать разделы

сначала вы использовали бы curl для получения документа, а затем hpricot, чтобы получить нужную вам часть

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...