Я пытаюсь получить доступ к атрибуту предыдущего брата, но это оказывается трудным.
Таким образом, в основном веб-страница, которую я пытаюсь вычистить, ужасна, а теги привязки используют crappy onclick вместо href. Глупо, я знаю. Я пытаюсь сначала найти тег привязки, содержащий онклик с window.open('servletLinkJunkHere...')
, а затем перейти к предыдущему брату, который является img
пометить и извлечь src
атрибут от него.
<img src="https://web-answers.ru/wp-content/uploads/2019/03/warning.gif" ALT="blah blah blah" STYLE="position:relative;top:2px;cursor:help;">
<a href="#" onclick="javascript:window.open('servletLinkJunkHere...')>
И вот xpath, который я пытаюсь использовать:
$url_pre = 'a[onclick*="'servletLinkJunkHere...'"]/preceding-sibling::img/@src';
Любые идеи о том, как я могу сделать это? Я знаю, что это возможно, но я не совсем опытен в запросах xpath. Кроме того, есть ли хорошие ресурсы для изучения всех закоулков xpath? Спасибо!
РЕДАКТИРОВАТЬ: Итак, это то, что у меня есть, но, похоже, не возвращает ничего, кроме пустого массива.
$url_email = "EditNotificationInfoServlet?cb=on&id=" . $id . "&sessionId=1";
$url_pre = "a[contains(@onclick,'" . $url_email . "')]/preceding-sibling::IMG/@SRC";
$final_text = $crawler->filterXPath($url_pre)->each(function($crawler, $i) {
return $crawler->text();
});
Я думаю, что вам нужно использовать следующий xpath:
a[contains(@onclick,'servletLinkJunkHere...')]/preceding-sibling::IMG/@SRC
Других решений пока нет …