Рубрики
Uncategorized

Очистка HTML с помощью PHP-узла и кукловода

Выскабливание в 2018 году, что интересно, я получаю приличное количество попаданий… Помечено как разработка программного обеспечения, howto, php, scrape.

Выскабливание в 2018 году

Интересно, что я получаю приличное количество просмотров в более раннем блоге, связанном с веб-очисткой. Мало что изменилось, за исключением того, что PhantomJS не является наиболее распространенным инструментом для очистки веб-страниц. Благодаря команде Google Chrome, создающей безголовый chrome Puppeteer и аналогичные инструменты, появилась возможность улучшить работу. Лично я не использую PHP так часто, как в прошлом, но многие люди все еще используют его.

Сегодня я начал с запуска виртуальной машины Ubuntu Linux в Azure, выполнив приведенную ниже команду, чтобы получить все, что требуется для установки безголового chrome.

sudo apt install -y gconf-service libasound2 libatk1.0-0 libc6 libcairo2 libcups2 libdbus-1-3 libexpat1 libfontconfig1 libgcc1 libgconf-2-4 libgdk-pixbuf2.0-0 libglib2.0-0 libgtk-3-0 libnspr4 libpango-1.0-0 libpangocairo-1.0-0 libstdc++6 libx11-6 libx11-xcb1 libxcb1 libxcomposite1 libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 libxtst6 ca-certificates fonts-liberation libappindicator1 libnss3 lsb-release xdg-utils wget

Затем установите php, composer и node js, которые я рекомендую перейти на веб-сайт nodejs и использовать их шаги

sudo apt install -y php composer php-mbstring

Я нашел красивую обертку для Chrome под названием Puppeteer. и для запуска композитора требуется nesk/puppeteer, а затем npm устанавливает @nesk/puppeteer.

Затем я написал свой скрипт, используя веб-сайт, созданный с помощью Vue JS, который отображает элементы списка из большого двоичного объекта json.

launch();

$page = $browser->newPage();
$page->goto('https://alanmbarr.github.io/HackMidWestTimeline/');

$data = $page->evaluate(JsFunction::createWithBody('return document.documentElement.outerHTML'));
$dom = HtmlDomParser::str_get_html( $data );
$browser->close();

foreach($dom->find('span') as $element) {
echo $element->plaintext."\n";
}

$dom->clear();
?>

Лично я предпочел бы сделать большую часть этого в NodeJS но если вы довольно привыкли к PHP, а не к JavaScript, это должно быть довольно приемлемым решением.

Оригинал: “https://dev.to/alanmbarr/scraping-html-with-php-node-and-puppeteer-10m2”