Как сделать сканирование и извлечение данных в каждом пейджере по ссылкам?

1

Я хочу извлечь все атрибуты name="" веб-сайта,

Пример html

<div class="link_row">
    <a href="" class="listing_container" name="7777">link</a>
</div>

У меня есть следующий код:

<?php
$html = new DOMDocument();
@$html->loadHtmlFile('http://www.onedomain.com/plus?ca=11_c&o=1');
$xpath = new DOMXPath( $html );
$nodelist = $xpath->query( "//div[@class='link_row']/a[@class='listing_container']/@name" );
foreach ($nodelist as $n){
    echo $n->nodeValue."\n<br>";
}
?>

Результат:

7777

Этот код работает нормально, но не обязательно ограничивается одним номером пейджера.

http://www.onedomain.com/plus?ca=11_c&o=1 пейджер attr - "o=1"

Я хотел бы, чтобы вы закончили с o=1, следуйте с o=2 чтобы моя переменная определена $last=556 равна http://www.onedomain.com/plus?ca=11_c&o=556

Не могли бы вы помочь мне? Каков наилучший способ сделать это?

благодаря

Теги:
curl
web-crawler
dom
domcrawler

1 ответ

1
Лучший ответ

Используйте цикл for (или while). Я не вижу $last в вашем предоставленном коде, поэтому я статически устанавливаю максимальное значение плюс одно.

$html = new DOMDocument();
for($i =1; $i < 557; $i++) {
    @$html->loadHtmlFile('http://www.onedomain.com/plus?ca=11_c&o=' . $i);
    $xpath = new DOMXPath( $html );
    $nodelist = $xpath->query( "//div[@class='link_row']/a[@class='listing_container']/@name" );
    foreach ($nodelist as $n){
        echo $n->nodeValue."\n<br>";
    }
}

Простой пример:

for($i =1; $i < 557; $i++) {
    echo $i;
}

http://php.net/manual/en/control-structures.for.php

  • 0
    А можно ли подождать пять секунд между каждым предметом?
  • 0
    Я не уверен, в какой момент вы хотите отложить исполнение; функция sleep должна быть в состоянии справиться с этим, php.net/manual/en/function.sleep.php . Что-то вроде sleep(5); ,

Ещё вопросы

Сообщество Overcoder
Наверх
Меню