[英]Scraping a webpage that is using a firebase database
免責聲明:我只是邊做邊學,我沒有惡意
因此,我想獲取此網站上列出的應用程序列表: http : //roaringapps.com/apps
過去,我做過類似的事情,但是網站更簡單。 這次,我無法獲取該網頁背后的數據。
從一頁到另一頁的滾動速度很快,因此,為了了解網頁的工作原理,我啟動了一個數據包嗅探器並分析了流量。 我注意到,在初始加載后,即使我在瀏覽器中滾動了2500條記錄,服務器和客戶端之間也沒有交換流量。 那怎么可能?
無論如何。 我的理解是該網站正在從某種流中加載數據,並通過Javascript進行渲染。 我對么?
因此,我啟動了鉻devtools並查看了“網絡”選項卡,並看到對以下地址發出了WebSocket請求:wss://s-usc1c-nss-123.firebaseio.com
在這一點上,谷歌搜索了一下之后,我嘗試使用在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.