2017-08-27 68 views
1

我試圖抓取產品視頻鏈接(它是由另一個Web服務動態生成的,位置在左側的產品圖像下)。您可以查看以下鏈接, https://www.tokopedia.com/chocoapple/ready-stock-bnib-iphone-128gb-7-plus-jet-black-garansi-apple-1-tahun-10?src=topads 谷歌瀏覽器「檢查元素」顯示div標籤。但是相同的標籤不存在於頁面源代碼中。 如何做到這一點?我正在研究goQuery來執行任務,但不知道它會不會起作用。我不是網絡開發人員,所以如果我的問題描述不具體,請考慮提供建議。 謝謝。GoLang刮板。如何在網站上動態生成鏈接?

回答

2

如果標籤不在源代碼中,那麼GoQuery將不起作用。 GoQuery用於使用類似jQuery的API來解析HTML源代碼。

您需要首先使用無頭像WebKit處理網頁,如phantomjs,chromelesspuppeteer。這些工具中的每一個將允許您在處理之前處理網頁上的所有Javascript。這樣,用於呈現您感興趣的視頻的AJAX將被處理並且源將被更新。然後你可以下載相應的應該有div的源代碼。

+0

值得要注意,你也可以使用nitghmarejs https://github.com/segmentio/nightmare –

+0

@schollz用無頭WebKit處理網頁,是標準方式嗎?此外,它在性能方面是否會大規模運作? –

+0

@yogesh_desai據我所知,這是標準的方式。無頭Webkit利用瀏覽器來進行渲染,我不知道另一種方式來做到這一點。至於性能擴展,您可能會考慮使用無法實現的功能,這可能會讓您通過AWS Lambda – schollz

1

請在下標籤找到<img class="thumbnail-img horizontal" src="//i.ytimg.com/vi/oKR2fh09Nic/mqdefault.jpg">。正如你看到src包含ID「oKR2fh09Nic」。這是需要路徑https://www.youtube.com/watch?v=oKR2fh09Nic

此外,您可以使用http://youtube.com/get_video_info?video_id= oKR2fh09Nic加載視頻信息。

例這裏https://github.com/kkdai/youtube/blob/master/youtube.go

+0

它可以用於多個視頻嗎?作爲鏈接,我共享了4個視頻。另外,當你說找到下一個標籤是什麼意思? –

+0

你提到的標籤

1

你可能需要像一個瀏覽器來評價頁面。正如schollz回答的那樣,這可以通過所謂的無頭瀏覽器(瀏覽器可通過cli或api使用,而不顯示它們的gui)。

在圍棋天地有在世界上的NodeJS chromedp

https://github.com/knq/chromedp

https://www.youtube.com/watch?v=_7pWCg94sKw

+0

謝謝,我一定會檢查一下並試一試。另外,請對我的評論schollz的答案,並提供更多的細節。 –

+0

要評估,是否需要通過chromedp加載頁面?我將如何獲取頁面的更新源? chromedp的哪些功能對我有用?任何想法? –