В прошлой статье я рассказал Вам как сделать простой парсер на PHP. Теперь давайте напишем тот же парсер но уже с phpQuery. Для начала давайте создадим папку для нашей библиотеки к примеру libs в папке с нашим проектом
вот что у нас должно получиться, далее скачиваем phpQuery (https: //storage.googleapis. com/google-code-archive-downloads/v2/code.google.com/phpquery/phpQuery-0.9.5.386-onefile.zip) и распаковываем в папку libs. В архиве будет один файл давайте для удобства переименуем его в phpQuery.php . Далее опять же заходим на http: //www.banki. ru/products/currency/cash/moskva/ и смотрим код
здесь интересует вот этот элемент <div class=»currency-table__large-text»>59,28</div>.
В phpQuery все проще регулярные выражения составлять не нужно. Для того чтобы получить нужный нам в данном случае курс валют нам всего лишь надо написать вот такую строчку кода
$usd_ru = $query->find('div.currency-table__large-text')->text();
но так как похожих элементов у нас шесть а нам нужен только первый то нам надо дописать один из следующих фильтров :first или :eq(0), с помощью фильтра :first мы можем получить только первый элемент а с помощью :eq() любой из шести, к примеру чтобы получить четвертый элемент нам нужно использовать фильтр :eq(3) так как отсчет начинается с нуля. Итак нужный нам код будет такой
$usd_ru = $query->find('div.currency-table__large-text:first ')->text();
или такой
$usd_ru = $query->find('div.currency-table__large-text:eq(0) ')->text();
кому как удобнее, а вот и весь код
<?php require 'libs/phpQuery.php'; $doc = file_get_contents("http://www.banki.ru/products/currency/cash/moskva/"); $query = phpQuery::newDocument($doc); $usd_ru = $query->find('div.currency-table__large-text:eq(0)')->text(); echo "USD RU = ".$usd_ru."\n"; ?>
как видим ничего сложного, запустим и проверим
все прекрасно работает.