素材牛VIP会员
如何提高爬虫爬取的速度?
 高***侠  分类:Python  人气:900  回帖:2  发布于6年前 收藏

写了个简单的协程爬虫爬取B站用户信息,代码如下:

import requests
import re
import json 
import datetime
import asyncio

def get_info(uid):
    url_info = "http://space.bilibili.com/ajax/member/GetInfo?mid=" #基本信息
    uid = str(uid)
    return loop.run_in_executor(None, requests.get, url_info+uid)

    
async def user_info(num):
    """
    uid = mid
    
    info
    'birthday': 生日
    'regtime': 注册时间
    'attentions': 关注
    'spacesta': ? 
    'attention': 关注人数 
    'toutu': ?
    'sex': 性别
    'fans': 粉丝数
    'friend': 关注?
    'level_info': 等级
    'place': 地理位置
    'face': 头像
    'name': 昵称
    'sign': 简介
    """
    for uid in range(num, num+10):
        info = await get_info(uid)
        info = json.loads(info.text)["data"]
        try:
        # print(datetime.datetime.fromtimestamp(info['regtime']))
            print("ok", uid)
            print(info)
        except UnicodeEncodeError as e:
            print("UnicodeEncodeError:", e)
        except TypeError:
            print(info)
            
loop = asyncio.get_event_loop()
try:
    loop.run_until_complete(asyncio.wait([user_info(x) for x in range(1, 1000, 10)]))
except Exception as e:
    print("Error:", e)

爬取1000条需要45秒左右,这样需要爬20天才能爬完。有没有什么办法提高爬取的速度?

 标签:python爬虫python

讨论这个帖子(2)垃圾回帖将一律封号处理……

Lv6 码匠
雾***n 页面重构设计 6年前#1

用scrapy

Lv5 码农
li***56 移动开发工程师 6年前#2

分布式爬虫或者开多个进程

 文明上网,理性发言!   😉 阿里云幸运券,戳我领取