Получить все ссылки на изображения из содержимого javascript

avatar
Kenny
8 апреля 2018 в 08:42
208
2
0
 <script type="text/javascript">
    var productJsonMedias = 
    [
        {"thumb":"domain.com/a-1.jpg","zoom":"domain.com/b-1.jpg","description":"","altText":"Product Name"},   
        {"thumb":"domain.com/a-2.jpg","zoom":"domain.com/b-2.jpg","description":"","altText":"Product Name"}    
    ];

Я хочу получить все ссылки на изображения из содержимого json, и этот скрипт встраивается в сеть. Я использую Simple Html Dom для сканирования Интернета.

Источник
Always Sunny
8 апреля 2018 в 08:44
2

что вы пытались САМИ получить все изображения из содержимого json?

Md Rashed Pervez
8 апреля 2018 в 08:45
0

Ваш формат json неверен

Kenny
8 апреля 2018 в 08:52
0

@BeingSunny я получаю контент из класса или идентификатора, например $html->find('.product-detail-title h1'), но в этом случае я не знаю, что мне делать

Kenny
8 апреля 2018 в 08:52
0

@MdRashedPervez Я только что обновил скрипт

Md Rashed Pervez
8 апреля 2018 в 09:08
0

см. эту ссылку- coderhelper.com/questions/9597624/…

Kenny
8 апреля 2018 в 09:23
0

@MdRashedPervez Я хочу получить этот скрипт с веб-страницы. После этого я использую декодирование json для преобразования в массив php... Я не являюсь администратором этой сети.

Ответы (2)

avatar
pguardiario
8 апреля 2018 в 23:54
0

Для получения json нужно использовать регулярное выражение:

$str = <<<EOF
<script type="text/javascript">
    var productJsonMedias = 
    [
        {"thumb":"domain.com/a-1.jpg","zoom":"domain.com/b-1.jpg","description":"","altText":"Product Name"},   
        {"thumb":"domain.com/a-2.jpg","zoom":"domain.com/b-2.jpg","description":"","altText":"Product Name"}    
    ];
</script>
EOF;

$html = str_get_html($str);
$script = $html->find('script', 0);
if(!preg_match('/\[.*\]/', $script, $m)) die('cant find json!');

print_r(json_decode($m[0], true));

/*
(
    [0] => Array
        (
            [thumb] => domain.com/a-1.jpg
            [zoom] => domain.com/b-1.jpg
            [description] => 
            [altText] => Product Name
        )

    [1] => Array
        (
            [thumb] => domain.com/a-2.jpg
            [zoom] => domain.com/b-2.jpg
            [description] => 
            [altText] => Product Name
        )

)
*/
Kenny
9 апреля 2018 в 13:05
0

Вы спасли мою жизнь

avatar
Artem
8 апреля 2018 в 09:34
0

Если вы хотите получить данные из JSON, используйте AJAX:

var data = [];
var xhr = new XMLHttpRequest();

  xhr.open('GET', '*LINK TO JSON*', true);
    xhr.send();
    xhr.onreadystatechange = function() {
     if (xhr.readyState != 4) return;
     if (xhr.status != 200) {
      alert(xhr.status + ': ' + xhr.statusText);
     } else {
      try{         
        data = JSON.parse(xhr.responseText);
      }catch(e){
        alert("ERROR: " + e);
      }
    }
   }

Если вы хотите получить HTML-код со страницы, вы должны использовать php или node.js (вы должны отправить запрос GET и разобрать код).

Лучше отправить запрос ajax GET для данных JSON.