我想抓取Purestorage Career page來提取Greenhouse的工作列表。當我嘗試通過PhantomJS加載頁面時,我有時會看到包含溫室作業列表job的完整渲染頁面,有時我只會看到沒有溫室網頁的部分渲染頁面。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();
爲什麼使用PhantomJS時只需直接調用API端點? – Eloims
這是一個更一般的問題。我通過PhantomJS抓取了很多網站,這個特殊情況並不是結果數據。 –