HTML — Можно ли очистить сайт на основе JavaScript с помощью Goutte / PHP?

Я хочу очистить несколько веб-сайтов, которые, по-видимому, отображаются с использованием JavaScript. Чтобы быть конкретным, я хочу ориентироваться на этот сайт: http://cve.mitre.org/find/index.html

Это мой код:

$client = new Client();

$crawler = $client->request('GET', 'http://cve.mitre.org/find/index.html');
$form = $crawler->selectButton('Search')->form();
$crawler = $client->submit($form, array('search' => 'Symphony'));

print $crawler->html();

Если я просматриваю исходный код, я не вижу HTML, потому что этот запрос выполняется с помощью JavaScript, поэтому кто-нибудь знает, как очистить такие сайты?

1

Решение

Этот сайт использует ленивый «пользовательский поиск Google» вместо того, чтобы реализовывать свой собственный, что означает, что сайт поставляется со всеми видами JavaScript-лжи.

Похоже, что настоящий поиск может быть выполнен с помощью традиционной отправки формы, вам просто нужно опубликовать в форме, используя элементы, которые отображает Google. Тем не менее, это может быть не так просто, так как Google может проверять источники и так далее, и в любом случае предотвращать это.

У вас есть несколько вариантов, я думаю:

  • Для запуска поиска используйте браузер без головы, такой как PhantomJS. Вы можете попробовать управлять этим напрямую или использовать что-то вроде Spiderling. Это определенно будет работать, но это немного медленнее, чем запуск простого браузера, такого как Goutte, и для запуска на сервере требуются права администратора.
  • Соскребите Google напрямую с domain:cve.mitre.org при необходимости
  • Зарегистрируйтесь в API поиска Google и используйте его напрямую
  • Попробуйте ввести нужную форму в Goutte и отправить ее в Google (трудно знать, будет ли она работать, пока вы не попробуете)
2

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

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

https://stackoverflow.com/a/45212818/1038178

0

По вопросам рекламы [email protected]