Задать вопрос
@midarovrk

Как связать PHP Simple HTML DOM Parser с cURL?

Помогите связать php simple html dom parser с curl.

Написал простенький парсер изображений на основе PHP Simple HTML DOM Parser
Парсер по url перекачивает картинки к себе на сервер. Но есть одно но, в документации написано:

К сожалению, file_get_html загружает страницы обычным file_get_contents. Это значит если хостер, выставил в php.ini allow_url_fopen = false (т.е. запретил удаленно открывать файлы), то загрузить что-то удаленно, не получится. Да и серьезные веб сайты таким способом парсить не стоит, лучше использовать CURL с поддержкой proxy и ssl. Однако для наших опытов, вполне хватит и file_get_html.


Там советуют использовать в связке с cURL.

Вот мой код парсинга.

<?php
require_once 'simple_html_dom.php';

// поисковый URL
$url = 'https://сайт.org/ссылка'
$n = 200;
// загружаем данный URL
$data = file_get_html($url);
// очищаем страницу от лишних данных
foreach($data->find('script,link,comment') as $tmp)$tmp->outertext = '';
// находим все изображения на странице
if(count($data->find('div#all img'))){
  $i = 1;
  foreach($data->find('div#all img') as $img){

  Ну и тут уже сам код парсинга.

    if($i>$n)break; // выходим из цикла если скачали достаточно фотографий
  }
}
$data->clear();// подчищаем за собой
unset($data);
?>


Как к этому коду привязать cURL, т.е. чтобы в дальнейшем можно было использоваться $url и $data в PHP Simple HTML DOM Parser ?

$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'https://сайт.org/ссылка');
   curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_USERAGENT,'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17');
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
 curl_setopt($ch, CURLOPT_REFERER,'https://сайт.org');
$url = curl_exec($curl);
curl_close($curl);
  • Вопрос задан
  • 824 просмотра
Подписаться 1 Средний Комментировать
Решения вопроса 1
@Nc_Soft
Разделите код на 3 логические части и реализуйте их независимо
1. получение кода страницы (curl, guzzle)
2. парсинг и получение урл картинок (dom parser, didom, symfony/dom-crawler)
3. скачивание картинок (curl, guzzle, wget)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы