2016-09-20 198 views
0

我試圖抓取電子商務目錄,其中使用Ajax響應加載產品數據。在Ruby中獲取完整的HTML頁面(包括AJAX響應)

因此,使用獲取請求的響應內容不完整(部分數據)。

我使用Ruby的默認HTTP庫來獲取& Nokogiri進行解析。

有什麼辦法,我可以發起請求&記錄一些延遲後的迴應?

回答

0

你需要一個libary/method /方法,它有一個JavaScript引擎來執行javascript,因爲使用了ajax(如果你想自動完成它)。

你可以使用模擬瀏覽器這就像phantomjs:

PhantomJS Project Homepage

PhantomJS for Ruby

Wiki Article

它基本上沒有前端一個正常的瀏覽器。 PhantomJS使用Webkit引擎(例如Safari使用)。 因此它有能力執行JS,因此還有AJAX。

+0

它不完全正確。如果事先足夠了解,通常可以在不涉及JavaScript的情況下執行請求。 – Felix

+0

@Felix:我同意(編輯答案)。 但是,定製構建所有AJAX請求可能需要很多工作(並且很頭疼),並且最終必須使用與webbrowser相同的DOM。如你所說,你需要事先足夠的瞭解。儘管只爲一個特定的「頁面」執行此操作是可以的,但可能需要很長時間才能爲網站的不同網站/頁面執行此操作。 – Marcel

+0

絕對同意。 – Felix