2014-11-19 4 views
1

Я сломаю некоторые HTML-страницы с помощью Rails, используя Nokogiri.Скребка приложения AngularJS

У меня возникли проблемы, когда я попытался сменить страницу AngularJS, потому что драгоценный камень открывает HTML, прежде чем он будет полностью отображен.

Есть ли способ отказаться от этого типа страницы? Как я могу сделать страницу полностью развернутой, прежде чем очистить ее?

+3

Вам может понадобиться использовать что-то вроде [PhantomJS] (http://phantomjs.org/), чтобы полностью отображать страницы с JavaScript на них. – tadman

+0

Проблема заключается в том, что страница загружает контент динамически. Отключите JavaScript в своем браузере и нажмите на страницу, и вы увидите, что видит ваш код, поскольку ни код, ни браузер в этой точке не интерпретируют и не запускают JavaScript. У Nokogiri нет способа «открытия HTML», он анализирует только то, что ему дано. –

ответ

3

Если вы пытаетесь полностью очистить страницы AngularJS, вам, скорее всего, понадобится что-то вроде того, что упоминал в комментариях @tadman (PhantomJS) - некоторый тип браузера без браузера, который полностью обрабатывает AngularJS JavaScript и после этого открывает DOM для проверки.

Если у вас есть определенный сайт или сайты, которые вы хотите очистить, путь наименьшего сопротивления, скорее всего, полностью исключает фронтмен AngularJS и напрямую запрашивает API, из которого Angular code тянет содержимое. Стандартный сценарий для большинства/большинства сайтов AngularJS заключается в том, что они вытаскивают статические JS и HTML-код/​​шаблоны, а затем они делают ajax-обратные вызовы на сервер (либо собственный, либо какой-то сторонний API), чтобы получить контент, который будет оказаны. Если вы посмотрите на их код, вы можете напрямую запросить любой угловой вызов (т. Е. Через $ http, ngResource или restangular). Возвращаемые данные, как правило, JSON и гораздо легче собирать по сравнению с истинным соскабливанием в результатах post-rendered html.

1

Вы можете использовать:

require 'phantomjs' 
require 'watir' 

b = Watir::Browser.new(:phantomjs) 
b.goto URL 

doc = Nokogiri::HTML(b.html) 

Скачать phantomjs в http://phantomjs.org/download.html и переместить бинарник для/USR/бен

Смежные вопросы