Очистить больше, чем одну страницу - PullRequest
0 голосов
/ 04 марта 2019

Я пытаюсь собрать данные (имя, сорт, формат и цену) с этого сайта. https://aabalat.com/wine/country/france. Я создал массив по имени $ urls и нажимаю на каждую ссылку в массиве.Для каждой новой сессии я получу 20 новых данных о вине.Мне нужно сначала захватить формат и нажать на массив, как вы можете видеть на моем коде ниже.Когда я печатаю $ french_wines_formats_matches, он работает успешно.Но когда я хочу напечатать $ french_wines_format_array, он работает не очень хорошо.

Я новичок в области скрапинга, и у меня нет особого опыта в этом.

<code>    // Array contains 197 links
$urls = array();
array_push($urls, "https://aabalat.com/wine/country/france");


// This for loop makes others links
for($i = 1; $i < 5; $i++)
{
  $urls[] = "https://aabalat.com/wine/country/france?page=".$i;
}

// echo "<pre>";
// print_r($urls);
// echo "
"; $ french_wines_array = array ();$ french_wines_title_array = array (); $ french_wines_varietal_array = array (); $ french_wines_format_array = array (); $ french_wines_price_array = array (); // Повторять сеанс curl до тех пор, пока не будет URL.(); curl_setopt ($ curl, CURLOPT_URL, $ url); curl_setopt ($ curl, CURLOPT_RETURNTRANSFER, true); curl_setopt ($ curl, CURLOPT_FOLLOWLOCATION, true); curl_setopt ($ curL__trato) ($ curT_URTURC),curl); $ info = curl_getinfo ($ curl); $ err = curl_error ($ curl); $ ern = curl_errno ($ curl); $ french_wine_formats_pattern = '! (. *) ! mi'; preg_match_all ($ french_wine_formats_pattern, $ output, $ french_wines_formats_matches); foreach ($ french_wines_formats_matches [0] as $ french_wines_formats_match) {$ french_wines_format_array [] = $ french_wines_formats_match;} echo "
";
  print_r($french_wines_format_array);
  echo "
";curl_close ($ завиток);сон (ранд (2, 5));}

1 Ответ

0 голосов
/ 04 марта 2019

Ваш код и регулярные выражения, кажется, работают ( Я попробовал их ).Я не смог повторить ваш звонок cURL.Попробуйте просто вместо $output = curl_exec($curl), посмотрите, обнаружите ли вы какие-либо ошибки cURL:

    if(!$output = curl_exec($curl)){
        if (curl_error($ch)) {
            die(curl_error($ch));
        }
    }

Наконец, я попробовал простой file_get_contents(), и это, похоже, сработало:

    $url = "https://aabalat.com/wine/country/france";
    $output= file_get_contents($url);
...