vaassen 2020-09-16 13:40 采纳率: 42.9%
浏览 150
已结题

Python爬虫:爬取某网站时,有多个路径,每个路径有多种参数,要爬取全部数据,如何提速,多线程还是多进程?如何构架?怎样实现?

我是Python爬虫小白,假如某网站有多个栏目,他们的url路径不同,每个栏目又可以拼接多种不同参数。如果要爬取全部数据,我该如何提速,多线程还是多进程?

结合代码来看,我现在已经写好了每个栏目的爬取代码,单线程/进程的伪代码如下:

我想爬取该网站A栏目路径下的3种不同数据(3种不同的参数)和B栏目路径下的3种数据(3种不同的参数),我该如何提速?用多线程还是多进程?如何构架?怎么实现呢?

def login(url):
    登陆函数

def get_A(拼接参数):
    url = “A栏目对应的url?”
    params = {
    "参数":拼接参数
    }
    data = requests.get(url, headers=hearders,params=params)
    解析并获取A路径下拼接参数的数据
    return 爬取数据

def get_B=(拼接参数):
    url = “B栏目对应的url?”
    params = {
    "参数":拼接参数
    }
    data = requests.get(url, headers=hearders,params=params)
    解析并获取B路径下拼接参数的数据
    return 爬取数据


if__name__="__main__"
    login(登陆网站)
    get_A(“A栏目的第1种拼接参数”)
    get_A(“A栏目的第2种拼接参数”)
    get_A(“A栏目的第3种拼接参数”)
    get_B(“B栏目的第1种拼接参数”)
    get_B(“B栏目的第2种拼接参数”)
    get_B(“B栏目的第3种拼接参数”)
  • 写回答

4条回答 默认 最新

  • threenewbee 2020-09-16 13:55
    关注

    看瓶颈在哪里
    如果是外部因素,比如服务器带宽、你的网络带宽、服务器限速等情况,无论哪种优化都没用
    如果是cpu密集操作同时你有多个处理器,或者网络延迟比较大,那么多线程或者多进程可以提高速度
    多进程可以增加稳定性,编写程序难度低,适合多计算机扩展
    多线程在线程之间传递同步数据更方便,内存消耗少

    评论

报告相同问题?

悬赏问题

  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?