[問題] 爬蟲程式架構問題

作者: occlumency3 (鎖心術)   2024-07-03 12:41:31
小弟為Python業餘愛好者,觀念可能不是很紮實,先請大大們海涵。
目前寫了一支爬新聞標題的腳本,針對不同關鍵字去新聞網站搜尋新聞,然後抓標題下來。
目前架構是共爬6個新聞網站,不同網站各有一支function去操作(假設為ABCDEF)
ABCDEF各自把標題爬下來後,會各自return df
然後有一支主程式(稱為main),main會逐步執行ABCDEF,最後把ABCDEF return的df concate 起來,最後to_excel匯出。
目前這個架構遇到的問題就是程式會以ABCDEF的順序逐步執行,假設我每個新聞網站都有20個關鍵字要爬,B function要等A爬完那20個關鍵字後才會開始執行,同理C function要等A跟B都爬完那20個關鍵字後才會開始執行,導致非常耗時。
所以想問問架構可以怎麼改,讓ABCDEF同步執行,然後各自return的df,先完成的就先存到某個容器,等容器蒐集完6個df再concate並匯出?
感謝各位大大!
作者: tzouandy2818 (Naked Bear)   2024-07-03 12:42:00
非同步
作者: robert09080 (Aspettarei)   2024-07-03 13:33:00
thread
作者: lycantrope (阿寬)   2024-07-03 13:50:00
asyncio
作者: starweixing (星小星)   2024-07-03 16:23:00
Asyncio+aiohttp
作者: occlumency3 (鎖心術)   2024-07-03 22:07:00
使用Thread+Queue貌似可以達到想要的效果了 謝謝各位
作者: max36067 (圍巾喵)   2024-07-16 23:15:00
建議不要先直接包成 dataframe,用dict 合併append到list之後再轉就好了

Links booklink

Contact Us: admin [ a t ] ucptt.com