吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1594|回复: 16
收起左侧

[Python 原创] python获取某博个人已发博文,导出为txt

[复制链接]
PEKING1 发表于 2024-2-8 20:17
本帖最后由 PEKING1 于 2024-2-8 20:23 编辑

python获取某博个人已发博文,导出为txt


前言

最近属于是无事可做,在论坛看到有个朋友要求爬某博的博文,为了有事可做,顺便回忆一下python,原来有很多图的,但因为在本地要挨个上传编辑,太麻烦了些,便没了...

1.梳理


**三个关键网络请求
https://某博.com/a**x/pri****le/detail?uid=作者uid
https://某博.com/a**x/st***ses/mymblog?uid=作者uid&page=页数&feature=0
https://某博.com/a**x/st***ses/longtext?id=展开的longtext_id
文章完整性判断字段:continue_tag

2.实现效果

image-20240208192004186.png

3.代码实现


<u>需要替换的地方:headers,uid,page,url</u>

from datetime import datetime
import re
import requests
from tqdm import tqdm

# 星期映射字典
weekday_dict = {
    'Mon': '星期一',
    'Tue': '星期二',
    'Wed': '星期三',
    'Thu': '星期四',
    'Fri': '星期五',
    'Sat': '星期六',
    'Sun': '星期日'
}

# 获取某博数据
def fetch_moubo_data(uid, page):
    """
    :param uid: 作者uid
    :param page: 某博页数,一页20条
    :return: 20条某博数据
    """
    headers = 你的headers
    url = f"https://www.某博.com/a**x/st***ses/mymblog?uid={uid}&page={page}&feature=0"
    response = requests.get(url, headers=headers)
    return response.json() if response.status_code == 200 else None

# 获取展开内容
def fetch_moubo_longtext(moubo_id):
    """
    :param moubo_id: 某博展开的博文id
    :return: 需展开的某博全文
    """
    headers = 你的headers

    url = f"https://www.某博.com/a**x/st***ses/longtext?id={moubo_id}"

    response = requests.get(url, headers=headers)
    # print(response.json()['data']['longTextContent'])
    f_text = re.sub(r'\n\s*\n*', '', response.json()['data']['longTextContent'])
    # print(re.sub(r'\n\s*\n*', '', response.json()['data']['longTextContent']))
    return f_text if response.status_code == 200 else None

# 格式化时间
def parse_and_format_datetime(created_at):
    """
    :param created_at: 当前某博的发布时间信息,原始为:"Thu Feb 08 11:22:19 +0800 2023"
    :return: 2023,3月,08日        星期三        11:22:19
    """
    # 定义匹配原始字符串的格式
    fmt = "%a %b %d %H:%M:%S %z %Y"
    # 解析字符串为datetime对象
    dt_obj = datetime.strptime(created_at, fmt)
    # 格式化并获取所需信息
    weekday = weekday_dict[dt_obj.strftime('%a')]  # 星期(英文转中文)
    month = dt_obj.month # 月份(英文转中文)
    day = dt_obj.strftime('%d')  # 日期
    year = dt_obj.year  # 年份
    time = dt_obj.strftime('%H:%M:%S')  # 时间
    return f"{year},{month}月,{day}日\t{weekday}\t{time}"

# 使用示例
# data = fetch_moubo_data(88668866888, 1)
data = fetch_moubo_data(88668866888, 1)
if data:
    data_list = data['data']['list']
    with open('你的文件名字.txt', 'a', encoding='utf-8') as f:
        for i in tqdm(data_list):
            if 'continue_tag' in i:
                content = (
                    f"作者:{i['user']['screen_name']}\n"
                    f"发布时间:{parse_and_format_datetime(i['created_at'])}\n"
                    f"发布内容:\n{fetch_moubo_longtext(i['mblogid'])}\n"
                    "----------------------------------------------------------------\n"
                )
                f.write(content)
            else:
                content = (
                    f"作者:{i['user']['screen_name']}\n"
                    f"发布时间:{parse_and_format_datetime(i['created_at'])}\n"
                    f"发布内容:\n{i['text']}\n"
                    "----------------------------------------------------------------\n"
                )
                f.write(content)
else:
    print("无法获取数据")

4.说明

本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!

免费评分

参与人数 1吾爱币 +7 热心值 +1 收起 理由
苏紫方璇 + 7 + 1 新年快乐

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| PEKING1 发表于 2024-2-8 20:27
headers快速复制替换
把对应的对象复制到python中
image-20240208191355856.png
image-20240208191516904.png
taoxwl666 发表于 2024-2-8 21:20
HUHU666 发表于 2024-2-8 21:30
PEKING1 发表于 2024-2-8 20:27
headers快速复制替换
把对应的对象复制到python中

楼主太强大了!
怜渠客 发表于 2024-2-8 22:11
能连同图片、视频一起保存了吗
月巴耳总 发表于 2024-2-8 23:54
很有趣,也很实用
dujiu3611 发表于 2024-2-9 00:28
这个好玩,应用于某种场合可能更方便。
感谢分享。
Python666999 发表于 2024-2-9 08:06
值 得学习,感谢分享!
 楼主| PEKING1 发表于 2024-2-9 10:34

相关代码要替换一下
 楼主| PEKING1 发表于 2024-2-9 10:50
lianquke 发表于 2024-2-8 22:11
能连同图片、视频一起保存了吗

保存的是url,文件的话还要另作分析
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 17:25

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表