• 大小: 4KB
    文件类型: .py
    金币: 1
    下载: 0 次
    发布日期: 2021-05-12
  • 语言: Python
  • 标签: python  爬虫  微博  

资源简介

才刚刚学习python不久,自己琢磨做的一个微博爬虫小程序,可以自动下载其他人的微博图片以及视频,大佬勿喷。

资源截图

代码片段和文件信息

# -*- coding: utf-8 -*-
“““
本脚本可以爬取用户的图片及其视频
为了减少不必要的麻烦,以移动端(m.weibo.cn)为爬取目标
ID是其主页面url后面数字,如https://m.weibo.cn/u/123456的ID就是123456
“““
import requests
import os
import threading
import sys
import time

head = {
‘User-Agent‘:‘Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML like Gecko) Chrome/64.0.3282.119 Safari/537.36‘
}

def get_url():
    url = ‘https://m.weibo.cn/api/container/getIndex?type=uid&value=‘ + uid
    response = requests.get(url)
    containerid = response.json()[‘data‘][‘tabsInfo‘][‘tabs‘][1][‘containerid‘]
    url = url + ‘&containerid=‘ + containerid + ‘&page=‘
    return url

def get_url_list():
    url = get_url()
    page = 0
    pic_list = []
    video_list = []
    while True:
        page += 1
        sys.stdout.write(‘page:{}\r‘.format(page))
        sys.stdout.flush()
        now_url = url+str(page)
        response = requests.get(now_url headers = head).json()
        # 当用户微博过多时,可能不会继续返回后面的页面,所以暂停一下
        if not response[‘ok‘]:
            print(‘error page:‘ page)
            page -= 1
            time.sleep(10)
            continue
        cards = response[‘data‘][‘cards‘]
        for card in cards:
            try:
                mblog = card[‘mblog‘]
            except:
                continue
            if ‘pics‘ in mblog.keys():
                for pic in mblog[‘pics‘]:
                    pic_list.append(pic[‘large‘][‘url‘])
            elif ‘page_info‘ in mblog.keys():
                try:
                    video_list.append(mblog[‘page_info‘][‘media_info‘][‘stream_url‘])
                except:
                    pass
        if response[‘data‘][‘cardlistInfo‘][‘page‘] == None:
            break
    # total = response.json()[‘data‘][‘cardlistInfo‘][‘total‘]
    return pic_list video_list

def get_pic(pic_urlpic_num):
    name = str(pic_num) + ‘

评论

共有 条评论