能否借鉴singlefile的懒加载(lazyload, lazy load, 延迟加载)功能
yilksd opened this issue · 3 comments
singlefile支持懒加载,比如像 https://sspai.com/post/81862 这样的网页,用singlefile获取到的页面比maoxian web clipper获取到的完整得多
你遇到的問題,或者說是需求是什麼呢? 請詳細地描述你的需求。我不明白你這裏說的 lazyload 是指擴展的代碼懶加載,還是網頁懶加載。
如果你是由於網頁上的信息具有懶加載機制,而導致裁剪下載的內容不全。比如:網頁的某些內容需要滾動到可見區後才會加載顯示。那麼在裁剪之前就滾動網頁,待到網頁狀態完整再裁剪就好。
@mika-cn 我指的是由於網頁上的信息具有懶加載機制,而導致裁剪下載的內容不全。
“在裁剪之前就滾動網頁,待到網頁狀態完整再裁剪就好”有些时候也不行,因为有些网站在滚屏之后会unload上部不可见区域的元素。比如这个:danny0838/webscrapbook#285 。
有些网站在滚屏之后会unload上部不可见区域的元素
你所說的分爲兩種情況:
- 當內容處於不可見區域時,隱藏掉內容里的圖片。
- 當內容處於不可見區域時,unload 掉內容(文字和圖片)
對於第一種情況,目前通過手動滾動網頁是無法解決的,通過 MaoXian 助手對圖片的 src 屬性進行修改,是可以解決的,因爲當你進入 MaoXian 的裁剪流程的時候,MaoXian 會先鎖定網頁(以防止網頁的狀態發生變更),然後會執行 MaoXian 助手功能,對網頁的狀態進行修改,使其更適合裁剪(此處我們改了 src 屬性)。
對於第二種情況,目前 MaoXian 是無法解決的。因爲當進入裁剪流程時,網頁的內容就已經不完整了。
爲了解決第二種情況,我們需要收集內容區所有顯示過的內容,這個也需要用戶滾動網頁使得我們能收集到所有內容。我已經嘗試地去寫這樣的一個程序,在測試過程中,發現從頭到尾滾動一次文章,可能還無法收集所有的內容,因爲在網絡卡了的時候,會一下子卡住,然後很快地向前滾動,這樣會導致中間某些元素在渲染之前就滾過頭(沒機會處於可見區),這樣會導致這些元素的狀態可能不對。這就導致了我們需要確定當這些元素處於一個什麼狀態時,我們才能收集它們。而且需要告知用戶,當前文章內容是否已經收集完成, 用戶才知道需不需要繼續滾動文章。所以需要對應的界面(UI)。但是目前 MaoXian 助手的所有功能都不涉及頁面,而且當前 MaoXian 助手的運行時機也不對 (因爲是在鎖定網頁之後運行),而這個收集內容的功能,需要在鎖定之前做。
這個需要好好考慮怎麼弄比較好,當然如果你有某些想法也歡迎提出來。