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

看板Python作者 (鎖心術)時間5月前 (2024/07/03 12:41), 編輯推噓1(106)
留言7則, 6人參與, 5月前最新討論串1/1
小弟為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://www.ptt.cc/bbs/Python/M.1719981693.A.47F.html

07/03 12:42, 5月前 , 1F
非同步
07/03 12:42, 1F

07/03 13:33, 5月前 , 2F
thread
07/03 13:33, 2F

07/03 13:50, 5月前 , 3F
asyncio
07/03 13:50, 3F

07/03 16:23, 5月前 , 4F
Asyncio+aiohttp
07/03 16:23, 4F

07/03 22:07, 5月前 , 5F
使用Thread+Queue貌似可以達到想要的效果了 謝謝各位
07/03 22:07, 5F

07/16 23:15, 5月前 , 6F
建議不要先直接包成 dataframe,用dict 合併append到li
07/16 23:15, 6F

07/16 23:15, 5月前 , 7F
st之後再轉就好了
07/16 23:15, 7F
文章代碼(AID): #1cXDPzH_ (Python)
文章代碼(AID): #1cXDPzH_ (Python)