Получить переменную внутри тега скрипта с помощью запроса xpath - PullRequest
1 голос
/ 15 января 2020

Я пытаюсь получить переменную (vin = 5J8TC2H69KL805815) внутри тега сценария с помощью запроса xpath для практики. Сценарий выглядит так:

<script type="text/javascript">
        var enterprise_id = 6731892;
        var dealertrackSettings = {"LowestPaymentWidgetParameters":"prtnr=EDLR&pdid=&jrr=9Z8758kQMpewxBhu8abpaBXX&lang=en&zip=T4R2N7&vin=5J8TC2H69KL805815&acode=CAC90ACS121C0&yr=2019&mk=Acura&model=RDX&style=SUV&trim=A-Spec&cond=U&kms=14,709&cp=52365&msrp=52365&hash=f8842e17a06af7c979d16db0980afbec28c808617e80db2260364c37235b9b25&pkg=&disp=2.0L&opt=&trans=AT&drv=All Wheel Drive&fuelType=Gasoline&eng=2.0L 4cyl&mcode=","DigitalRetailingWidgetParameters":"?flow=full&token=df387c15-9b3d-4694-b06f-fccdfbc8a437&lang=en&prtnr=EDLR&pdid=&zip=T4R2N7&vin=5J8TC2H69KL805815&msrp=52365&cp=52365&asst=AU&cond=U&yr=2019&mk=Acura&model=RDX&style=SUV&trim=A-Spec&tab=TRADE&jrr=9Z8758kQMpewxBhu8abpaBXX&hash=f8842e17a06af7c979d16db0980afbec28c808617e80db2260364c37235b9b25&kms=14,709&acode=CAC90ACS121C0&pkg=&disp=2.0L&opt=&trans=AT&drv=All Wheel Drive&fuelType=Gasoline&eng=2.0L 4cyl&mcode=","LowestPaymentWidgetAPIJson":null,"useUAT":false,"Domain":"https:\/\/digital.dealertrack.ca","displayAFFCTAUsed":true,"displayStructureMyDealCTAUsed":true,"structureMyDealBackgroundUsed":null,"displayFinancePrequalifyCTAUsed":true,"drivetrainMap":{"FRONT WHEEL DRIVE":"FWD","REAR WHEEL DRIVE":"RWD","AWD EXT":"AWD","N\/A":""},"transmissionMap":{"AUTOMATIC":"AT","MANUAL":"MT","OTHER":""}};
    </script>

Я сузил текст из тега сценария примерно так, и это возвращает текст.

//script[contains(text(), 'dealertrackSettings')]/text()

но из-за этого я немного запутался, что делать дальше. Любые предложения приветствуются. Tahnks

edit: я пытаюсь сделать это в php

1 Ответ

1 голос
/ 16 января 2020

Ваш XPath должен иметь возможность получать содержимое скрипта, я использовал evaluate(), так как это просто строка, которую вы хотите. Затем я использовал regex() для извлечения vin=... части.

$doc = new DOMDocument();
$doc->loadHTML($html);

$xp = new DOMXPath($doc);

$script = $xp->evaluate("string(//script[contains(text(), 'dealertrackSettings')]/text())");
if ( preg_match("/(vin=\w*)/", $script, $matches) ) {
    echo $matches[0];
}

, которая дает

vin=5J8TC2H69KL805815

Если вы просто хотите получить значение, тогда измените регулярное выражение на /vin=(\w*)/, здесь фиксируется только значение, но не часть vin=.

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