Используя php -spider, существует ли стандартный Xpath, который может обнаружить URI на большинстве веб-сайтов? - PullRequest
0 голосов
/ 15 апреля 2020

Я использую замечательный сценарий под названием php -spider с целью удаления Заголовка, Des c, H1, H2, H3 и H4 с нескольких веб-сайтов. В рамках настройки сценария необходимо установить XpathExpressionDiscoverer, чтобы указать сценарию, как искать дополнительные гиперссылки на каждой странице для сканирования. Я предполагаю, что это относится к стандартному языку запросов Xpath.

Моя цель - найти XpathExpressionDiscoverer, который обычно будет работать для большинства веб-сайтов (а не требовать, чтобы я настраивал его для каждого сайта).

Вот что я пробовал:

Я заметил, * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *} * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 101 * * * *. 1013 * Поскольку моей целью является просто обнаружение любых гиперссылок на странице, я попытался расширить XPath до чего-то более общего ("// a"), как показано ниже:

// We add an URI discoverer. Without it, the spider wouldn't get past the seed resource.
$spider->getDiscovererSet()->set(new XPathExpressionDiscoverer("//a"));

Пока этот новый Xpath успешно сканирует пример сайта (dmoztools. net), он не работает для других примеров, которые я пытаюсь (ниже). Он просто сканирует начальную страницу, но не может обнаружить или сканировать дополнительные URI на странице (даже если они имеют теги HREF, которые должны соответствовать Xpath).

Пример A: https://www.petco.com/shop/en/petcostore/category/fish

Пример B: https://www.thetruthaboutcars.com/

Вы случайно не видели, где я иду не так? Спасибо!

1 Ответ

0 голосов
/ 16 апреля 2020

Пример кода содержит эту строку:

$spider->getDiscovererSet()->addFilter(new AllowedSchemeFilter(array('http')));

Это должно быть:

$spider->getDiscovererSet()->addFilter(new AllowedSchemeFilter(array('http', 'https')));

Обратите внимание на добавление https в качестве разрешенной схемы. Без этого разрешены только URL-адреса со схемой http, а приведенные в качестве примера веб-сайты: https.

Кстати, когда я это проверял, я обнаружил ошибку, при которой URL-адреса без пути и без конечный знак sh иногда может привести к сбою. Я добавил исправление для этой ошибки в версии 0.4.4. Пожалуйста, обновите.

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