Python爬虫实战(四):微博博主信息爬取(粉丝数、关注数、博文数、信用等级、认证信息、个人简介……)

追风赶月莫停留,平芜尽处是春山。

好久没更新了,今天来更新一波。

今天继续使用新版微博

一、网页分析

依旧是女神迪丽热巴😍
找到热巴的主页,依旧先打开开发者模式,然后刷新网页。
在这里插入图片描述
在这个请求中你可以得到:昵称、关注数、粉丝数、博文数、个人简介、性别、是否通过微博认证、认证信息、地区、微博等级、会员等级等等。
另外一个请求
在这里插入图片描述
可以得到:生日、公司、学校、加入微博的时间、阳光信用等等。

二、接口分析

url分析

https://weibo.com/ajax/profile/info?uid=1669879400

很显然只有uid这一个参数,对应的是博主的id

https://weibo.com/ajax/profile/detail?uid=1669879400

同上
所以我们只要知道了博主的uid就可以获得他的相关信息了。

返回数据分析

两个接口大同小异,都是get请求,返回数据格式都是json格式
在这里插入图片描述

三、编写代码

知道了url规则,以及返回数据的格式,那现在咱们的任务就是构造url然后请求数据

uid = ['1669879400']
for id in uid:
    url1 = "https://weibo.com/ajax/profile/info?uid={}".format(id)
    url2 = "https://weibo.com/ajax/profile/detail?uid={}".format(id)

只要在uid这个列表里添加用户id,这样就可以实现多个用户信息的抓取了。
对于每个url我们都要去用requests库中的get方法去请求数据:
所以我们为了方便就把请求网页的代码写成了函数get_html(url),传入的参数是url返回的是请求到的内容。

def get_html(url):
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36",
        "Referer": "https://weibo.com"
    }
    cookies = {
    	"cookie": "你的cookie"
    }
    response = requests.get(url, headers=headers, cookies=cookies)
    time.sleep(3)	# 加上3s 的延时防止被反爬
    return response.text

注意这里一定要把你的cookie替换掉,不然请求不到内容。
cookies获取方式

获取数据

我把它封装成了一个函数,传入uid。

def get_data(id):
    url1 = "https://weibo.com/ajax/profile/info?uid={}".format(id)
    url2 = "https://weibo.com/ajax/profile/detail?uid={}".format(id)
    html1 = get_html(url1)
    html2 = get_html(url2)
    responses1 = json.loads(html1)
    data1 = responses1['data']['user']
    responses2 = json.loads(html2)
    data2 = responses2['data']
    data = {}  # 新建个字典用来存数据
    data['name'] = data1['name']  # 名字
    data['description'] = data1['description']  # 个人简介
    data['followers_count'] = data1['followers_count']  # 粉丝数量
    data['friends_count'] = data1['friends_count']  # 关注数量
    data['statuses_count'] = data1['statuses_count']  # 博文数量
    data['location'] = data1['location']  # 所在地区
    data['gender'] = data1['gender']  # 性别:f:女, m:男
    data['verified'] = data1['verified']  # 是否认证
    data['verified_reason'] = data1['verified_reason']  # 认证信息
    try:
        data['birthday'] = data2['birthday']  # 生日
    except KeyError:
        data['birthday'] = ""
    try:
        data['created_at'] = data2['created_at']  # 注册时间
    except KeyError:
        data['created_at'] = ""
    try:
        data['sunshine_credit'] = data2['sunshine_credit']['level']  # 阳光信用
    except KeyError:
        data['sunshine_credit'] = ""
    try:
        data['company'] = data2['career']['company']  # 公司
    except KeyError:
        data['company'] = ""
    try:
        data['school'] = data2['education']['school']  # 学校
    except KeyError:
        data['school'] = ""

注意:这里第二个接口之所以写try-except的原因是因为可能博主设置了权限,看不到他的一些相关信息。

保存数据

封装一个函数:

def save_data(data):
    title = ['name', 'description', 'followers_count', 'friends_count', 'statuses_count', 'location', 'gender', 'verified', 'verified_reason', 'birthday', 'created_at', 'sunshine_credit', 'company', 'school']
    with open("data.csv", "a", encoding="utf-8", newline="")as fi:
        fi = csv.writer(fi)
        fi.writerow([data[k] for k in title])

完整代码

# -*- coding:utf-8 -*-
# @time: 2021/6/8 10:00
# @Author: 韩国麦当劳
# @Environment: Python 3.7
import json
import requests
import csv
import time


def get_html(url):
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36",
        "Referer": "https://weibo.com"
    }
    cookies = {
    	"cookie": "你的cookie"
    }
    response = requests.get(url, headers=headers, cookies=cookies)
    time.sleep(3)   # 加上3s 的延时防止被反爬
    return response.text


def save_data(data):
    title = ['name', 'description', 'followers_count', 'friends_count', 'statuses_count', 'location', 'gender', 'verified', 'verified_reason', 'birthday', 'created_at', 'sunshine_credit', 'company', 'school']
    with open("data.csv", "a", encoding="utf-8", newline="")as fi:
        fi = csv.writer(fi)
        fi.writerow([data[k] for k in title])


def get_data(id):
    url1 = "https://weibo.com/ajax/profile/info?uid={}".format(id)
    url2 = "https://weibo.com/ajax/profile/detail?uid={}".format(id)
    html1 = get_html(url1)
    html2 = get_html(url2)
    responses1 = json.loads(html1)
    data1 = responses1['data']['user']
    responses2 = json.loads(html2)
    data2 = responses2['data']
    data = {}   # 新建个字典用来存数据
    data['name'] = data1['name']  # 名字
    data['description'] = data1['description']  # 个人简介
    data['followers_count'] = data1['followers_count']  # 粉丝数量
    data['friends_count'] = data1['friends_count']  # 关注数量
    data['statuses_count'] = data1['statuses_count']  # 博文数量
    data['location'] = data1['location']  # 所在地区
    data['gender'] = data1['gender']  # 性别:f:女, m:男
    data['verified'] = data1['verified']  # 是否认证
    data['verified_reason'] = data1['verified_reason']  # 认证信息
    try:
        data['birthday'] = data2['birthday']  # 生日
    except KeyError:
        data['birthday'] = ""
    try:
        data['created_at'] = data2['created_at']  # 注册时间
    except KeyError:
        data['created_at'] = ""
    try:
        data['sunshine_credit'] = data2['sunshine_credit']['level']  # 阳光信用
    except KeyError:
        data['sunshine_credit'] = ""
    try:
        data['company'] = data2['career']['company']  # 公司
    except KeyError:
        data['company'] = ""
    try:
        data['school'] = data2['education']['school']  # 学校
    except KeyError:
        data['school'] = ""
    save_data(data)


if __name__ == '__main__':
    uid = ['1669879400']
    for id in uid:
        get_data(id)

获得的部分数据截图
在这里插入图片描述
欢迎一键三连哦!
还想看哪个网站的爬虫?欢迎留言,说不定下次要分析的就是你想要看的!

<think>嗯,用户问的是关于“SD模型炼丹”,也就是Stable Diffusion模型的训练和微调。首先,我需要确认用户对SD模型的基础了解程度。可能用户已经知道Stable Diffusion是什么,但想进一步学习如何训练自己的模型。 接下来,我应该解释清楚什么是“炼丹”,也就是模型训练的过程。需要分步骤说明,从准备据到训练技巧,再到应用场景。用户可能对技术细节感兴趣,但作为副业,他们可能更关注实际应用和变现方式。 要考虑到用户可能的背景,或许他们有一定的技术基础,但需要指导如何入门。需要推荐一些工具和平台,比如Hugging Face、Colab,还有常用的库如Diffusers。同时,要提醒注意事项,比如版权问题,硬件需求,避免常见错误。 用户可能想知道如何将训练好的模型变现,所以要列出几个可行的途径,比如模型售卖、定制服务、内容创作等。这部分需要具体案例,比如在Civitai上出售模型,或者接企业定制项目。 还要注意回答的结构,按照之前的格式,分点说明,保持清晰。同时,确保使用正确的中文术语,避免翻译错误。比如“微调”而不是“fine-tuning”的直译。 另外,用户可能在寻找副业方向,所以需要强调低成本和可操作性,比如使用现有平台和开源工具,减少初期投入。提醒他们时间和资源管理的重要性,比如据标注的耗时和硬件要求。 最后,检查是否有遗漏的关键点,比如训练技巧中的学习率调整、据增强,或者应用场景中的具体例子。确保回答全面且实用,帮助用户真正开始他们的SD模型训练副业。</think>以下是关于**Stable Diffusion(SD)模型训练与微调(俗称“炼丹”)**的详细介绍,涵盖技术原理、操作流程和变现方向: --- ### 一、SD模型基础概念 #### 1. **什么是“炼丹”** - **定义**:通过调整模型参或输入据,让SD模型生成特定风格的图像(如动漫风、写实摄影、品牌视觉等)。 - **常见类型**: - **Checkpoint模型**:完整训练新模型(需高算力) - **LoRA模型**:轻微调(适合个人开发者) - **Textual Inversion**:通过关键词触发特定风格 #### 2. **技术原理** - **核心机制**:通过反向扩散过程(Diffusion)逐步去除噪声生成图像 - **训练关键**: - **据集**:图像+标签(需规范标注) - **Loss函**:计算生成图与目标图的差异 - **学习率**:控制参更新速度(过高会失真,过低效率低) --- ### 二、炼丹全流程指南(以LoRA为例) #### 1. **准备阶段** - **硬件需求**: - 最低配置:RTX 3060(12GB显存) - 推荐配置:RTX 4090/A100(可租赁Google Colab或AutoDL) - **软件工具**: - WebUI:AUTOMATIC1111/Kohya_SS - 库:Diffusers、Hugging Face Transformers #### 2. **据准备** - **据集要求**: - 风格统一:建议20-50张同类型图片 - 分辨率:512×512或768×768(需统一) - 标注格式:`.txt`文件描述每张图(可用WD14标签器自动生成) - **预处理工具**: - 去重:`ImageDedup` - 增强:`Albumentations`(旋转/裁剪/调色) #### 3. **训练参设置** ```python # 典型LoRA配置(kohya_ss GUI) { "learning_rate": 1e-4, "batch_size": 4, "max_train_steps": 1000, "network_dim": 128, "optimizer": "AdamW8bit", "mixed_precision": "fp16" } ``` #### 4. **训练技巧 - **防止过拟合**: - 正则化:Dropout率设为0.1-0.3 - 早停法(Early Stopping) - **提升效果**: - 渐进式学习率(Cosine衰减) - 分层训练(先练整体结构,再调细节) --- ### 三、变现方向 #### 1. **模型售卖** - **平台**: - Civitai(国际社区,高流) - 吐司(国内平台,支持RMB结算) - **定价策略**: - 通用模型:$5-15/次下载 - 定制模型:$200+/项目 #### 2. **企业服务** - **案例**: - 电商:生成产品宣传图(需配合ControlNet控制姿势) - 游戏:快速产出角色/场景概念图 - 广告:批生成A/B测试素材 #### 3. **内容创作** - **NFT生成**:用SD制作系列化字藏品 - **自媒体素材**:生成配图+AI配音(如抖音科普视频) --- ### 、常见问题与避坑指南 1. **显存不足报错**: - 解决方案:启用`--medvram`参,或减小`batch_size` 2. **人物脸部崩坏**: - 修复方法:训练时添加`<lora:detail_face:0.8>`触发词 3. **版权风险**: - 合规建议:使用CC0协议图片训练,或购买Shutterstock据集 --- ### 五、学习资源推荐 1. **入门教程**: - Hugging Face官方文档《Fine-tuning Stable Diffusion》 - B站:秋葉aaaki的《SD-WebUI保姆级教程》 2. **进阶工具**: - 超参优化:Weights & Biases(可视化训练过程) - 模型融合:Merge Block Weight脚本 --- **启动建议**: 可从微调现成模型(如`Counterfeit-V3`)开始,尝试输出小红书风格插画(需关键词`pastel color, flat illustration`),测试市场需求后再投入深度开发。
评论 29
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

韩国麦当劳

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值