Member 13648817 Ответов: 1

Как вы соскребаете содержимое под “<ul>”, Если "<ul>" не имеет класса


Я пытаюсь получить содержание под "ul"Я попробовал приведенный ниже код, когда я выполняю скрипт, он сообщает мне общее количество ссылок, но дальше этого он не царапается.

Если бы у ul был класс Пусть говорят <ul class="list-group"> Я бы просто сделал это
foreach($html->find('.list-group a') as $element)
Поэтому мой вопрос заключается в том, как мне заставить скребок утилизировать ссылки под ним "ul- если ... "ul- у него нет класса. Заранее спасибо.

Вот фрагмент контента, который я пытаюсь соскрести.

Сайт снипт · GitHub[^]

Что я уже пробовал:

else {
    $html = get_web_page(SITE2_BASE_URL . $path);
    $html = str_get_html($html);
    $result = array();
    foreach($html->find('.series a') as $element)  {
        $result[] = array('title'=> $element->plaintext, 'href'=> $element->href);
    }

1 Ответов

Рейтинг:
0

David_Wimbley

Я не запускал ваш код но думаю что вам тоже нужно измениться foreach($html->find('.list-group a') as $element) к

foreach($html->find('ul') as $element)


или если у вас их больше 1 <ul> тег на странице, попробуйте

foreach($html->find('.menu_series ul') as $element)


Это кажется довольно прямолинейным, так что я не уверен, что что-то упускаю.


Member 13648817

2-е решение сработало, но когда я выполняю скрипт, он извлекает общее количество ссылок и показывает "ссылку обработки" для первой ссылки "/category/25-sai-no-joshikousei", но не очищает ее или какие-либо ссылки, если на то пошло. Скриншот результатов (https://i.stack.imgur.com/ucJlY.png) полный код моего скрипта (https://gist.github.com/PushmeOver/74adf94fb66d8f6287420d6b63f8c942)

David_Wimbley

Ваша ссылка на github не сработала для меня.

David_Wimbley

Глядя на ваш код, учитывая, что он выполнил цикл только один раз, вам может потребоваться изменить его foreach($html->find('.menu_series ul') as $element) к foreach($html->find('.menu_series ul li') as $element)

Member 13648817

Он все еще не работает, когда я выполняю сценарий. Вот новая ссылка, извините за это. https://codeshare.io/5PzpJX

David_Wimbley

Я не уверен .menu_series ul a будет работать как путь XPath в теге якоря не /навигация/ул/у, тэг якорь под /навигация/ул/ли/так, не стихия ли в вашем .найти способ я ожидал бы это, чтобы не работать.

Следует иметь в виду, что если вы пытаетесь настроить таргетинг на вложенный HTML/XML, то не обязательно пропускать элементы, если только используемая библиотека не поддерживает указание точного местоположения.

То, что я имею в виду под этим, - это ваше текущее использование в методе .find, похоже, думает, что тег якоря выглядит примерно так

	<nav class="menu_series cron">
		<ul>
			<a href="url">link</a>
		</ul>
	</nav>


Когда на самом деле, согласно ссылке, которую вы разместили в своем вопросе, тег якоря находится под таким элементом li.


	<nav class="menu_series cron">
		<ul>
			<li>
				<a href="url">link</a>
			</li>
		</ul>
	</nav>



Все это чтобы сказать я думаю тебе нужно измениться .menu_series ul a к .menu_series ul li a

Member 13648817

Я изменил его на". menu_series ul li a`. Когда я выполняю сценарий, он показывает то же самое, что и изображение, которое я предоставил ранее.