universal parser for multicasting and content processing
ΠΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠ΅ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ: php 7, (*1)
Π£Π½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π΄Π»Ρ ΠΏΠ°ΡΡΠΈΠ½Π³Π° ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΊΠΎΠ½ΡΠ΅Π½ΡΠ° Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠ°ΠΉΡΠΎΠ². Multiparser ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΊΠ°ΠΊ ΠΎΠ±ΡΡΠ½ΡΡ Π·Π°Π³ΡΡΠ·ΠΊΡ ΡΠ΅ΡΠ΅Π· curl, ΡΠ°ΠΊ ΠΈ ΠΌΡΠ»ΡΡΠΈ - Π·Π°Π³ΡΡΠ·ΠΊΡ multicurl, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ php simple dom parser (ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΡΠΉ ΡΠ°ΠΉΡ Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅ΠΉ - http://simplehtmldom.sourceforge.net/manual.htm ) Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΡ Π΄Π°Π½Π½ΡΡ ., (*2)
ΠΠ»Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΏΠ°ΠΊΠ΅ΡΠ° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π²Π²Π΅ΡΡΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:, (*3)
composer require zabrodskiy/yii2-multiparser
'components' => [ 'multiparser' => [ 'class' => 'multiparser\GetMultiContent',//ΠΊΠ»Π°ΡΡ 'message' => true,//ΠΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡ Π²ΡΠ²ΠΎΠ΄ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΡΠ°Π±ΠΎΡΡ ΡΠΊΡΠΈΠΏΡΠ°, ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ false 'cookies_path' => '@app/runtime/curl/my_cookies_parser.txt', // ΠΏΡΡΡ ΠΊ Π·Π°ΠΏΠΈΡΠΈ ΡΠ°ΠΉΠ»Π° cookies ΠΏΠ°ΡΡΠΈΡΡΠ΅ΠΌΡΡ ΡΠ°ΠΉΡΠΎΠ², ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ '' ], ],
<?php namespace app\commands; use Yii; class ParserController extends \yii\console\Controller{ public function actionIndex(){ //ΠΌΠ°ΡΡΠΈΠ² ΡΡΡΠ»ΠΎΠΊ $url = [ 'http://rozetka.com.ua/prestigio_smartbook_141a03_psb141a03bfw_mb_cis/p12467569/', 'http://rozetka.com.ua/acer_nx_gfteu_004/p13720121/', 'http://rozetka.com.ua/lenovo_80r20069ua/p5905617/', 'http://rozetka.com.ua/acer_nx_gceeu_098/p13716558/' ]; /** * GetMultiContent->init($url, $no_parser = false) ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅Ρ ΠΏΠ°ΡΡΠ΅Ρ, ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π΄Π²Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°: * $url type string - ΡΡΡΠ»ΠΊΠΈ ΠΏΠ°ΡΡΠΈΡΡΠ΅ΠΌΡΡ ΡΠ°ΠΉΡΠΎΠ², Π΅ΡΠ»ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΠΌΠ°ΡΡΠΈΠ² ΠΎΡΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΌΡΠ»ΡΡΠΈΠ·Π°Π³ΡΡΠ·ΡΠΈΠΊ * Π΅ΡΠ»ΠΈ ΡΡΡΠΎΠΊΡ ΠΎΡΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΎΠ±ΡΡΠ½ΡΠΉ Π·Π°Π³ΡΡΠ·ΡΠΈΠΊ * $no_parser type boolean - true, Π½Π΅ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ Simple_html_dom ΠΊΠΎΠ½ΡΠ΅Π½Ρ Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΊΠΎΠ½ΡΠ΅Π½ΡΠ° * ΠΈ Π²Π΅ΡΠ½Π΅Ρ ΡΡΡΠΎΠΊΡ, false, ΡΠΎΠ·Π΄Π°ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ false) */ foreach(Yii::$app->multiparser->init($url) as $teg){ foreach($teg->find('a') as $atribut) //ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ php simple dom parser (ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΡΠΉ ΡΠ°ΠΉΡ Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅ΠΉ - http://simplehtmldom.sourceforge.net/manual.htm ) echo $atribut->href . "\n"; echo Yii::$app->multiparser->info; //URL Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ³ΠΎ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠ° } } }
<?php namespace app\commands; use Yii; class ParserController extends \yii\console\Controller{ public function actionIndex(){ $url = 'http://rozetka.com.ua/prestigio_smartbook_141a03_psb141a03bfw_mb_cis/p12467569/'; /** * GetMultiContent->init($url) ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅Ρ ΠΏΠ°ΡΡΠ΅Ρ, ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π΄Π²Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°: * $url type string - ΡΡΡΠ»ΠΊΠΈ ΠΏΠ°ΡΡΠΈΡΡΠ΅ΠΌΡΡ ΡΠ°ΠΉΡΠΎΠ², Π΅ΡΠ»ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΠΌΠ°ΡΡΠΈΠ² ΠΎΡΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΌΡΠ»ΡΡΠΈΠ·Π°Π³ΡΡΠ·ΡΠΈΠΊ * Π΅ΡΠ»ΠΈ ΡΡΡΠΎΠΊΡ ΠΎΡΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΎΠ±ΡΡΠ½ΡΠΉ Π·Π°Π³ΡΡΠ·ΡΠΈΠΊ * $no_parser type boolean - true, Π½Π΅ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ Simple_html_dom ΠΊΠΎΠ½ΡΠ΅Π½Ρ Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΊΠΎΠ½ΡΠ΅Π½ΡΠ° * ΠΈ Π²Π΅ΡΠ½Π΅Ρ ΡΡΡΠΎΠΊΡ, false, ΡΠΎΠ·Π΄Π°ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ false) */ $html = Yii::$app->multiparser->init($url); foreach($html->find('a') as $element) echo $element->href . "\n"; } }