[问题] 爬虫程式架构问题

楼主: 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