PHP - управлять выводом скручивания - PullRequest
0 голосов
/ 01 апреля 2020

основываясь на моем последнем вопросе, я отправил запрос на сайт, и он показал мне вывод. Но вывод покажи мне полный сайт. я хочу получить только некоторые данные, такие как ссылка в выводе curl.

$url = 'http://site1.com/index.php';
$data = ["send" => "Test"];
$ch = curl_init($url);

curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($ch);
curl_close($ch);
var_dump($response);

этот код показывает мне, что я хочу, но вывод содержит полный веб-сайт. я просто хочу получить некоторые данные и показать их на выходе.

1 Ответ

1 голос
/ 01 апреля 2020

Вы можете использовать preg_match_all и тщательно построенный шаблон. Эта измененная версия вашего кода должна предоставить вам список всех URL-адресов изображений в HTML, которые вы получите:

        $url = 'http://site1.com/index.php';
        $data = ["send" => "Test"];
        $ch = curl_init($url);

        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

        $response = curl_exec($ch);
        curl_close($ch);


        $matches = NULL;
        $pattern = '/<img[^>]+src=\"([^"]+)"[^>]*>/';
        $img_count = preg_match_all($pattern, $response, $matches);

        var_dump($matches[1]);

Если вы хотите получить все ссылки вместо этого, вы можете изменить $pattern к этому:

        $pattern = '/<a[^>]+href=\"([^"]+)"[^>]*>/';

Я проверил этот код на html файле, который выглядит так:

<html>
<body>
<div><img src="WANT-THIS"></div>
</body>
</html>

И вывод такой:

array(1) {
  [0]=>
  string(9) "WANT-THIS"
}

РЕДАКТИРОВАТЬ 2: В ответ на дополнительные вопросы от OP, я также попробовал сценарий для этого html файла:

<html>
<body>
<div1>CODE</div><div2>CODE</div><div3>CODE</div><div4>CODE</div><div5>CODE</div><div6>CODE</div><img src="IMAGE">
</body>
</html>

И он дает такой результат:

array(1) {
  [0]=>
  string(5) "IMAGE"
}

Если это не решит вашу проблему, вам нужно будет предоставить дополнительную информацию - либо пример URL, который вы выбираете, некоторые HTML, которые вы хотите найти, или дополнительную информацию о том, как вы могли бы знать какое изображение в HTML вы хотите получить - есть ли у него какой-то особый идентификатор? Это всегда первое изображение? Второе изображение? Есть ли какие-либо характеристики c, по которым мы знаем, какое изображение захватить?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...