Я создал простую утилиту для очистки веб-страниц с помощью PHP и cURL, и использую подобный код для захвата определенных элементов очищенной страницы по идентификатору или по имени тега, где в нужном элементе отсутствует идентификатор: 1001 *
$dom = new DOMDocument();
@$dom->loadHTML($response);
$table = $dom->getElementsByTagName('table')->item(4);
$response = $dom->saveXML($table);
Теперь я столкнулся с дилеммой, когда мне нужно сделать еще один шаг и найти родительский элемент определенной строки или шаблона регулярного выражения, потому что сайт, с которого мне нужно собирать данные, не имеет идентификаторов. или классы в элементах HTML, из которых мне нужно извлечь данные, и на разных страницах данные могут быть организованы по-разному, поэтому я не всегда могу полагаться на данные, содержащиеся в таблице #X. Единственный надежный способ получить данные, которые мне нужны от этого сайта, - это искать их по текстовому формату, который всегда будет числовым списком, начинающимся с «1». Они также не используют упорядоченные списки или было бы намного проще. Это просто простая ячейка таблицы с числовыми строками, разделенными простым <br>
.
Итак, я подумал, что если бы я мог найти «1», то его родительский элемент был бы ячейкой таблицы <td>
, и, найдя ее, мне нужно было бы извлечь ее содержимое и, возможно, содержимое любого другого ячейки соседней таблицы в этой строке таблицы. Других примеров «1», которые я мог бы найти на странице или в HTML-коде, нет, поэтому такой подход кажется разумным, если не хакерским, но я отвлекся.
Итак, как лучше всего подойти к чему-то подобному?