作者occlumency3 (鎖心術)
看板Python
標題[問題] 爬蟲程式架構問題
時間Wed Jul 3 12:41:31 2024
小弟為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並匯出?
感謝各位大大!
-----
Sent from JPTT on my iPhone
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 223.137.105.27 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Python/M.1719981693.A.47F.html
1F:→ tzouandy2818: 非同步 07/03 12:42
2F:→ robert09080: thread 07/03 13:33
3F:→ lycantrope: asyncio 07/03 13:50
4F:推 starweixing: Asyncio+aiohttp 07/03 16:23
5F:→ occlumency3: 使用Thread+Queue貌似可以達到想要的效果了 謝謝各位 07/03 22:07
6F:→ max36067: 建議不要先直接包成 dataframe,用dict 合併append到li 07/16 23:15
7F:→ max36067: st之後再轉就好了 07/16 23:15