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密集操作同时你有多个处理器,或者网络延迟比较大,那么多线程或者多进程可以提高速度
    多进程可以增加稳定性,编写程序难度低,适合多计算机扩展
    多线程在线程之间传递同步数据更方便,内存消耗少

    评论

报告相同问题?

悬赏问题

  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大
  • ¥15 import arcpy出现importing _arcgisscripting 找不到相关程序