Очистить тег в PHP Goutte

#javascript #php #web-scraping #goutte

#javascript #php #соскабливание полотна #goutte

Вопрос:

Я очищаю веб-сайт с помощью PHP Goutte, но мне нужна некоторая информация, которая указана только в теге script следующим образом:

 <script>
player.qualityselector({
        sources: [
          { format: 'auto', src: "xxx.example.com", type: 'video/mp4'},
                        { format: '1080p WEB-DL', src: "xxx.example.com", type: 'video/mp4'},
                          { format: '720p WEB-DL', src: "xxx.example.com", type: 'video/mp4'},
                          { format: '480p WEB-DL', src: "xxx.example.com4", type: 'video/mp4'},
                          { format: '360p WEB-DL', src: "xxx.example.com", type: 'video/mp4'},
                          { format: '240p WEB-DL', src: "xxx.example.com", type: 'video/mp4'},
      ],
      });
</script>
 

Мне нужен src каждого из них, возможно ли это?

Ответ №1:

Вы можете использовать регулярные выражения.

Пример

 $page_content = <<<EOF
<script>
player.qualityselector({
        sources: [
          { format: 'auto', src: "xxx.example.com", type: 'video/mp4'},
                        { format: '1080p WEB-DL', src: "xxx.example.com", type: 'video/mp4'},
                          { format: '720p WEB-DL', src: "xxx.example.com", type: 'video/mp4'},
                          { format: '480p WEB-DL', src: "xxx.example.com4", type: 'video/mp4'},
                          { format: '360p WEB-DL', src: "xxx.example.com", type: 'video/mp4'},
                          { format: '240p WEB-DL', src: "xxx.example.com", type: 'video/mp4'},
      ],
      });
</script>
EOF;

preg_match_all('/src:s"(.*)"/', $page_content, $match);
$result = $match[1];
print_r($result);
 

Вывод

 Array
(
    [0] => xxx.example.com
    [1] => xxx.example.com
    [2] => xxx.example.com
    [3] => xxx.example.com4
    [4] => xxx.example.com
    [5] => xxx.example.com
)