Вопрос

Я пытаюсь создать простое приложение для друзей для друзей.

В основном я хочу иметь возможность извлечь данные «цена» и «доступность акций» с веб -страницы, как Foluesing Two:

Я сделал предупреждение через часть электронной почты и SMS, но теперь я хочу иметь возможность получить количество и цену из веб-страниц (эти 2 или любые другие), чтобы я мог сравнить цену и количество доступных и предупредить нас Чтобы сделать заказ, если продукт находится между некоторыми порогами.

Я попробовал некоторую репутацию (найдено на некоторых учебных пособиях, но я слишком n00b для этого), но не удалось получить эту работу, какие -нибудь хорошие советы или примеры?

Это было полезно?

Решение

$content = file_get_contents('http://www.sparkfun.com/commerce/product_info.php?products_id=9279');

preg_match('#<tr><th>(.*)</th> <td><b>price</b></td></tr>#', $content, $match);
$price = $match[1];

preg_match('#<input type="hidden" name="quantity_on_hand" value="(.*?)">#', $content, $match);
$in_stock = $match[1];

echo "Price: $price - Availability: $in_stock\n";

Другие советы

Это называется царапином экрана, на случай, если вам нужно Google для этого.

Я бы посоветовал вам использовать выражения DOM и XPath. Сначала подайте HTML через HTMLTIDY, чтобы убедиться, что это действительная разметка.

Например:

$html = file_get_contents("http://www.example.com");
$html = tidy_repair_string($html);
$doc = new DomDocument();
$doc->loadHtml($html);
$xpath = new DomXPath($doc);
// Now query the document:
foreach ($xpath->query('//table[@class="pricing"]/th') as $node) {
  echo $node, "\n";
}

Что бы вы ни делали: не используйте регулярные выражения, чтобы проанализировать HTML или Плохие вещи произойдут. Анкет Использовать парсер вместо.

1 -й, задавая этот вопрос слишком подробно. 2 -е, извлечение данных с веб -сайта не может быть законной. Однако у меня есть намеки:

  1. Используйте инспектор Firebug или Chrome/Safari, чтобы исследовать контент HTML и шаблон интересной информации

  2. Проверьте свою форму, чтобы увидеть, совпадает ли. Вам может понадобиться сделать это много раз (многопроходное анализ/извлечение)

  3. Запишите клиента через Curl или даже намного проще, используйте file_get_contents (обратите внимание, что некоторые хостинг отключают URL -адреса загрузки с помощью file_get_contents)

Для меня я бы лучше использовал Tidy, чтобы преобразовать в действительный XHTML, а затем использовать XPath для извлечения данных вместо повторного выражения. Почему? Потому что xhtml не является обычным, а XPath очень гибкий. Вы можете выучить XSLT, чтобы преобразовать.

Удачи!

Вы, наверное, лучше загружать код HTML в такого анализатора DOM Вот этот и поиск таблицы «цены». Тем не менее, любой вид соскоба, который вы делаете, может сломаться всякий раз, когда они меняют свою макет страницы, и, вероятно, является незаконным без их согласия.

Лучшим способом, однако, было бы поговорить с людьми, которые управляют сайтом, и посмотреть, есть ли у них альтернативные, более надежные формы доставки данных (приходят на ум веб -сервисы, RSS или экспорт базы данных).

Самый простой метод извлечения данных с веб -сайта. Я проанализировал, что все мои данные охватываются только в теге, поэтому я подготовил это.

<?php
    include(‘simple_html_dom.php’);
        // Create DOM from URL, paste your destined web url in $page 
        $page = ‘http://facebook4free.com/category/facebookstatus/amazing-facebook-status/’;
        $html = new simple_html_dom();

       //Within $html your webpage will be loaded for further operation
        $html->load_file($page);

        // Find all links
        $links = array();
        //Within find() function, I have written h3 so it will simply fetch the content from <h3> tag only. Change as per your requirement.
       foreach($html->find(‘h3′) as $element) 
        {
            $links[] = $element;
        }
        reset($links);
        //$out will be having each of HTML element content you searching for, within that web page
        foreach ($links as $out) 
        {
            echo $out;
        }                

?>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top