From f8fd05f08f114c0fa007075a1da6b780eb6a593f Mon Sep 17 00:00:00 2001 From: ORelio Date: Mon, 31 Jul 2023 19:07:34 +0200 Subject: [PATCH] [CssSelectorBridge] Handling of missing links (#3585) When using parent element as URL selector: * If no inside some elements, ignore them * If no inside ALL elements, report an error Fixes #3573 #issuecomment-1656943318 --- bridges/CssSelectorBridge.php | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/bridges/CssSelectorBridge.php b/bridges/CssSelectorBridge.php index 2d7489de..ce158758 100644 --- a/bridges/CssSelectorBridge.php +++ b/bridges/CssSelectorBridge.php @@ -198,6 +198,9 @@ class CssSelectorBridge extends BridgeAbstract } if ($link->tag != 'a') { $link = $link->find('a', 0); + if (is_null($link)) { + continue; + } } $item['uri'] = $link->href; $item['title'] = $link->plaintext; @@ -209,6 +212,10 @@ class CssSelectorBridge extends BridgeAbstract $link_to_item[$link->href] = $item; } + if (empty($link_to_item)) { + returnClientError('The provided URL selector matches some elements, but they do not contain links.'); + } + $links = $this->filterUrlList(array_keys($link_to_item), $url_pattern, $limit); if (empty($links)) {