2016-05-13 2 views
0

Я пытаюсь очистить Purestorage Career page, чтобы извлечь список вакансий в оранжерею. Когда я пытаюсь загрузить страницу через PhantomJS, я иногда вижу полную отображаемую страницу, содержащую список вакансий в оранжерее job, и иногда я получаю только частичную рендеринговую страницу, у которой нет парниковых URL-адресов.PhantomJS не делает все звонки AJAX при каждой загрузке страницы

Увидев исходный код страницы из Purestorage career page, я вижу следующий код

<div class="container" data-component-name="embed-greenhouse" data-component-url="/api/jobs/v1/jobs.ws.json"> 

    <div id="alert-container" class="container"> 
    </div> 


    <div class="row"> 
     <div class="col-sm-12 results-col" id="greenhouse"> 
     </div> 
    </div> 
</div> 

Похоже, они загружаются работы путем выдачи запроса GET к json url. Тем не менее, PhantomJS не ВСЕГДА делает этот запрос.

Как я могу убедиться, что все вызовы AJAX выполняются PhantomJS. Это происходит из-за специальной структуры кода на этом конкретном веб-сайте?

Редактировать: Я использую Phantomjs 2.1.1. Я также попытался очистить кеш до загрузки страницы, но не повезло.

page.clearMemoryCache(); 
+0

Зачем использовать PhantomJS, когда вы можете просто напрямую вызвать конечную точку API? – Eloims

+0

Это более общий вопрос. Я просматриваю множество сайтов через PhantomJS, и этот конкретный случай не является результатом данных. –

ответ

0

Я выяснил эту проблему здесь. В этом конкретном случае PhantomJS обрабатывал загрузку страницы как «полную» еще до загрузки файла async JSON. Добавление задержки на 1 секунду после загрузки страницы дает сценарию достаточно времени для загрузки данных Greenhouse на страницу.

0

Это вопрос кэша, но вы правы, что PhantomJs 2.1.1 не кажется, уважать просьбу ClearCache. Способ, которым я работал с этим PhantomJsCloud.com, заключается в удалении кеша на диске и перезапуска экземпляров, когда делается запрос на четкий кеш.

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