簡體   English   中英

爬網使用Firebase數據庫的網頁

[英]Scraping a webpage that is using a firebase database

免責聲明:我只是邊做邊學,我沒有惡意

因此,我想獲取此網站上列出的應用程序列表: http : //roaringapps.com/apps

過去,我做過類似的事情,但是網站更簡單。 這次,我無法獲取該網頁背后的數據。

從一頁到另一頁的滾動速度很快,因此,為了了解網頁的工作原理,我啟動了一個數據包嗅探器並分析了流量。 我注意到,在初始加載后,即使我在瀏覽器中滾動了2500條記錄,服務器和客戶端之間也沒有交換流量。 那怎么可能?

無論如何。 我的理解是該網站正在從某種流中加載數據,並通過Javascript進行渲染。 我對么?

因此,我啟動了鉻devtools並查看了“網絡”選項卡,並看到對以下地址發出了WebSocket請求:wss://s-usc1c-nss-123.firebaseio.com

鉻devtool

在這一點上,谷歌搜索了一下之后,我嘗試使用在devtools窗口中看到的“ v = 5&ns = roaringapps”查詢來查詢同一台服務器:

from websocket import create_connection
ws = create_connection('wss://s-usc1c-nss-123.firebaseio.com')
ws.send('v=5&ns=roaringapps')
print json.loads(ws.recv())

並得到此回復:

{u't': u'c', u'd': {u't': u'h', u'd': {u'h': u's-usc1c-nss-123.firebaseio.com', u's': u'JUL5t1nC2SXfGaIjwecB6G13j1OsmMVv', u'ts': 1476799051047L, u'v': u'5'}}}

我期望看到帶有有關應用程序等原始數據的json響應。 我做錯了什么?

非常感謝!

UPDATE

實際上,我剛剛發現該網站正在使用json加載其數據。 我可能沒有在迭代請求中看到它,可能是因為緩存-但是在Chrome中禁用它確實可以解決問題。

而Firebase數據庫允許您讀取/寫入JSON數據。 但是其SDK不僅可以傳輸原始的JSON數據,而且還可以做很多技巧來確保高效,流暢的體驗。 w ^

到達那里就是Firebase的有線協議。 該協議未公開記錄,並且(如果您是它的新手)嘗試對其進行分拆會給您帶來不愉快的時間。

要在某個位置檢索實際的JSON,最簡單的方法是使用Firebase的REST API 您只需將.json附加到URL上,然后針對該URL發出HTTP GET請求,就可以實現。

因此,如果從以下位置加載初始數據:

https://mynamespace.firebaseio.com/path/to/data

通過針對以下對象觸發HTTP GET,您將獲得原始JSON:

https://mynamespace.firebaseio.com/path/to/data.json

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM