Приветствую. Парсинг конкретной страницы на сайте читай-город.ру работает без проблем (хвала CURL и simple_html_dom), но если попробовать напрямую зайти на страницу с результатами поиска по сайту (например, http://www.chitai-gorod.ru/search/result.php?q=php) происходит редирект на главную. И этот редирект не дает спарсить страницу с результатами поиска. Как спарсить страницу с результатами поиска по сайту до редиректа? Приведенный ниже код (при указании соответствующего url) 100% работает при парсинге ozon.ru и read.ru Код (PHP): <? require_once('vendor/simplehtmldom/simple_html_dom.php'); function get_result($url){ $curl = curl_init(); $headers = [ 'User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:35.0) Gecko/20100101 Firefox/35.0', 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 'Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3', 'Connection: keep-alive' ]; $cookie = dirname(__DIR__)."/cookie.txt"; curl_setopt($curl,CURLOPT_RETURNTRANSFER,1); curl_setopt($curl,CURLOPT_FOLLOWLOCATION,1); curl_setopt($curl,CURLOPT_URL,$url); curl_setopt($curl,CURLOPT_HTTPHEADER,$headers); curl_setopt($curl,CURLOPT_SSL_VERIFYPEER,false); curl_setopt($curl,CURLOPT_SSL_VERIFYHOST,false); curl_setopt($curl,CURLOPT_COOKIEFILE,$cookie); curl_setopt($curl,CURLOPT_COOKIEJAR,$cookie); $res = curl_exec($curl); return $res; } ?> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251"> <meta charset="windows-1251"> <link rel="stylesheet" type="text/css" href="style.css"> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css"> </head> <body> <div class="main"> <form action = '' method="post"> <div class="form-group"><input class="form-control" type="text" name="zapros"></div> <input class="btn btn-success" type="submit" name="submit" value="search"> </form> <?php if (isset ($_POST['submit'])) { $user_query = urlencode ($_POST['zapros']); ?> <hr><h2>Chitai-Gorod.ru</h2> <div class="row"> <?php $url = 'http://www.chitai-gorod.ru/search/result.php?q=' . $user_query; $html = str_get_html( get_result($url) ); $title = $html->find(".ng-binding a"); $price = $html->find("div.butts span.ng-scope"); $img = $html->find("div.pic img"); //количество найденных книг $array_count = count($title); $title = array_slice($title, 0, 3); // считываем первые 3 элемента массива foreach ( $title as $key => $name ) { ?> <div class="col-md-4"> <div class="panel panel-default"> <div class="panel-heading"><p><?php echo $name->plaintext; ?><span class="price"><?php echo $price[$key]->plaintext; ?></span></p></div> <div class="panel-body"> <div align="center"> <img class="img-thumbnail" src="http://www.chitai-gorod.ru<?php echo $img[$key]->src; ?>"> </div> </div> </div> </div> <?php } //foreach $html->clear(); unset($html); unset($array_count); unset($title); unset($price); unset($img); unset($name); unset($key); ?> </div> <?php } // if isset ($_POST['submit']) ?> </div> </body> </html>
ты конечно молодец что по моему совету вычитал в памятке пункт о подсветке кода. но я вообще намекал на то что тут не принято помогать воровать контент ни в каком виде.
Воровать контент? Пишу "агрегатор" цен в книжных магазинах, для себя. Неужели кому-то доставляет удовольствие открывать по 10 вкладок в браузере и тратить время на сравнение цен. Получается, что price.ru и market.yandex.ru воруют контент? Все-таки жду от опытных разработчиков хотя бы намека на решение задачи.
нет, не воруют. сайт, желающий попасть в каталог, для начала выполняет ряд организационных требований а потом готовит плюшку называемую YML - формат экспорта для яндекс.маркета. так что это не воровство а сотрудничество. а у тебя воровство.
r0ma как тебе писали выше, если захочешь сделать агрегатор в который книжные будут загружать свои цены, то пиши, тут помогут.