веб-сканер — сканировать данные с помощью PHP, чтобы загрузить больше?

Я пытаюсь сканировать данные с веб-сайта, и я также сделал, но проблема в том, что есть кнопка «Загрузить больше», я могу сканировать только видимые данные, данные, которые появляются после нажатия на кнопку «загрузить больше», которую я не могу сканировать ,

Использование preg_match_all:

$page = file_get_contents('https://www.healthfrog.in/chemists/medical-store/gujarat/surat');

preg_match_all(
'/<h3><a href="(.*?)">(.*?)<\/a><\/h3><p><i class="fa fa-map-marker"><\/i>(.*?)<\/p>/s',
$page,
$retailers, // will contain the article data
PREG_SET_ORDER // formats data into an array of posts
);

foreach ($retailers as $post) {
$retailer['name'] = $post[2];
$retailer['address'] = $post[3];
echo "<b>".$retailer['name']."</b><br/>".$retailer['address']."<br/><br/>";
}

Использование DOMDocument:

$html = new DOMDocument();
@$html->loadHtmlFile('https://www.healthfrog.in/chemists/medical-store/gujarat/surat');
$xpath = new DOMXPath( $html );
$nodelist = $xpath->query('//*[@id="setrecord"]/div[@class="listing "]');

foreach ($nodelist as $n){
$retailer = $xpath->query('h3/a', $n)->item(0)->nodeValue."<br>";
$address = $xpath->query('p', $n)->item(0)->nodeValue;
echo "<b>".$retailer."</b><br/>".$address."<br/><br/>";
}

Любая идея, как получить все данные за один раз?

-1

Решение

Я думаю, вам нужно попробовать сканировать вашу веб-страницу более эффективным способом.

Мое первое предложение для вас использует PhantomJs как сложный веб-движок в командной строке. Это означает, что вы можете выполнять фантомные js-операции (в javascript) для получения веб-страниц, запуска некоторых dom-событий и получения необходимых данных с помощью команды php exec.

PhantomJS — это автономный сценарий WebKit с JavaScript API. Это
имеет быструю и встроенную поддержку различных веб-стандартов: обработка DOM,
Селектор CSS, JSON, Canvas и SVG.

// Simple Javascript example

console.log('Loading a web page');
var page = require('webpage').create();
var url = 'http://phantomjs.org/';
page.open(url, function (status) {
//Do your dom operations( click read more button or anything else) and just console.log(yourDataThatYouNeed)
phantom.exit();
});

Для получения данных вам нужен драйвер php для PhantomJs.

Вот пример Php Client For PhantomJS => https://github.com/jonnnnyw/php-phantomjs

На самом деле у меня есть php драйвер для phantomJs, который я разработал как побочный проект, и я планирую опубликовать его на своем аккаунте github в ближайшие дни.

Второй способ (честно говоря, по моему мнению, правильный путь для сложных проектов), который я предлагаю вам, — это использование такой структуры, как SCRAPY. Вы можете взглянуть на документация о том, как очистить данные с веб-страниц с помощью scrapy.

Scrapy — это мощная платформа для извлечения необходимых вам данных с веб-сайтов на основе Python.

Вы можете взглянуть на этот урок для использования scrapy https://docs.scrapy.org/en/latest/intro/tutorial.html

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector