#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
)