接口列表
注意
🟢代表已经实现,🟡代表正在实现或修改,🟤代表暂时不实现,🔵代表未来可能实现,🔴代表将会弃用。
handler接口列表
CLI接口 | 方法 |
---|---|
下载单个微博 | handle_one_weibo |
下载用户微博 | handle_user_weibo |
数据方法接口 | 方法 | 开发者接口 |
---|---|---|
创建用户记录与目录 | get_or_add_user_data | 🟢 |
获取用户信息(uid) | fetch_user_info | 🟢 |
获取用户信息(昵称) | fetch_user_info_by_screen_name | 🟢 |
获取用户详情 | fetch_user_detail | 🟢 |
提取微博用户id | extract_weibo_uid | 🟢 |
单个微博数据 | fetch_one_weibo | 🟢 |
用户微博数据 | fetch_user_weibo | 🟢 |
utils接口列表
工具类接口 | 类名 | 方法 | 状态 |
---|---|---|---|
管理客户端配置 | ClientConfManager | 🟢 | |
生成访客 Cookie | VisitorManager | gen_visitor | 🟢 |
提取微博 ID | WeiboIdFetcher | get_weibo_id | 🟢 |
提取列表微博 ID | WeiboIdFetcher | get_all_weibo_id | 🟢 |
提取微博用户 ID | WeiboUidFetcher | get_weibo_uid | 🟢 |
提取列表微博用户 ID | WeiboUidFetcher | get_all_weibo_uid | 🟢 |
提取微博用户昵称 | WeiboScreenNameFetcher | get_weibo_screen_name | 🟢 |
提取列表微博用户昵称 | WeiboScreenNameFetcher | get_all_weibo_screen_name | 🟢 |
全局格式化文件名 | - | format_file_name | 🟢 |
创建用户目录 | - | create_user_folder | 🟢 |
重命名用户目录 | - | rename_user_folder | 🟢 |
创建或重命名用户目录 | - | create_or_rename_user_folder | 🟢 |
提取微博文案 | - | extract_desc | 🟢 |
crawler接口列表
爬虫url接口 | 类名 | 方法 | 状态 |
---|---|---|---|
用户信息接口 | WeiboCrawler | fetch_user_info | 🟢 |
用户详情接口 | WeiboCrawler | fetch_user_detail | 🟢 |
用户微博接口 | WeiboCrawler | fetch_user_weibo | 🟢 |
单条微博接口 | WeiboCrawler | fetch_weibo_detail | 🟢 |
dl接口列表
下载器接口 | 类名 | 方法 | 状态 |
---|---|---|---|
创建下载任务 | WeiboDownloader | create_download_task | 🟢 |
处理下载任务 | WeiboDownloader | handler_download | 🟢 |
下载文案 | WeiboDownloader | download_desc | 🟢 |
下载视频 | WeiboDownloader | download_video | 🟢 |
下载图集 | WeiboDownloader | download_images | 🟢 |
💡 提示
- 翻页参数都包含在上一次请求的数据中,通过内置的
filter
过滤器可以很方便的获取。 - 所有包含翻页参数的接口均使用异步生成器方法,需要通过
async for
进行迭代,便于自动处理翻页。 - 当
max_counts
设置为None
或不传入时,将会获取所有的微博数据。 - 在一些后端框架
FastAPI
、Flask
、Django
中可以方便的集成等。 - 使用登录的
cookie
可以无视该账号的私密设置。
handler接口列表
创建用户记录与目录 🟢
异步方法,用于获取或创建用户数据同时创建用户目录。
参数 | 类型 | 说明 |
---|---|---|
kwargs | dict | cli字典数据,需获取path参数 |
user_id | str | 用户ID |
db | AsyncUserDB | 用户数据库 |
返回 | 类型 | 说明 |
---|---|---|
user_path | Path | 用户目录路径对象 |
py
import asyncio
from f2.apps.weibo.handler import WeiboHandler
from f2.apps.weibo.db import AsyncUserDB
from f2.log.logger import logger
kwargs = {
"headers": {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36 Edg/130.0.0.0",
"Referer": "https://www.weibo.com/",
},
"proxies": {"http://": None, "https://": None},
"cookie": "YOUR_COOKIE_HERE",
"path": "Download",
# "mode": "post",
}
async def main():
async with AsyncUserDB("weibo_users.db") as audb:
uid = "6524978930"
logger.info(
await WeiboHandler(kwargs).get_or_add_user_data(
kwargs=kwargs, uid=uid, db=audb
)
)
if __name__ == "__main__":
asyncio.run(main())
💡 提示
- 此为
cli
模式的接口,开发者可自行定义创建用户目录的功能。 - 不设置
mode
参数时,默认为PLEASE_SETUP_MODE
目录。
获取用户信息(uid) 🟢
异步方法,用于获取指定用户的信息。
参数 | 类型 | 说明 |
---|---|---|
uid | str | 用户ID |
返回 | 类型 | 说明 |
---|---|---|
UserInfoFilter | JsonModel | 用户信息过滤器,包含用户信息的_to_raw、_to_dict方法 |
py
import asyncio
from f2.apps.weibo.handler import WeiboHandler
from f2.log.logger import logger
kwargs = {
"headers": {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36 Edg/130.0.0.0",
"Referer": "https://www.weibo.com/",
},
"proxies": {"http://": None, "https://": None},
"cookie": "YOUR_COOKIE_HERE",
}
async def main():
user = await WeiboHandler(kwargs).fetch_user_info(uid="2265830070")
# logger.info(
# f"微博用户ID: {user.uid}, 昵称: {user.nickname}, 性别: {user.gender}, 地区: {user.location}, 关注数: {user.friends_count}, 粉丝数: {user.followers_count}, 微博数: {user.weibo_count}, 个人主页: {user.profile_url}"
# )
logger.info("=================_to_raw================")
logger.info(user._to_raw())
# logger.info("=================_to_dict===============")
# logger.info(user._to_dict())
if __name__ == "__main__":
asyncio.run(main())
获取用户信息(昵称) 🟢
异步方法,通过用户昵称获取用户信息。
参数 | 类型 | 说明 |
---|---|---|
screen_name | str | 用户昵称 |
返回 | 类型 | 说明 |
---|---|---|
UserInfoFilter | JsonModel | 用户信息过滤器,包含用户信息的_to_raw、_to_dict方法 |
py
import asyncio
from f2.apps.weibo.handler import WeiboHandler
from f2.log.logger import logger
kwargs = {
"headers": {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36 Edg/130.0.0.0",
"Referer": "https://www.weibo.com/",
},
"proxies": {"http://": None, "https://": None},
"cookie": "YOUR_COOKIE_HERE",
}
async def main():
user = await WeiboHandler(kwargs).fetch_user_info_by_screen_name(
screen_name="阿里多多酱"
)
# logger.info(
# f"微博用户ID: {user.uid}, 昵称: {user.nickname}, 性别: {user.gender}, 地区: {user.location}, 关注数: {user.friends_count}, 粉丝数: {user.followers_count}, 微博数: {user.weibo_count}, 个人主页: {user.profile_url}"
# )
logger.info("=================_to_raw================")
logger.info(user._to_raw())
# logger.info("=================_to_dict===============")
# logger.info(user._to_dict())
if __name__ == "__main__":
asyncio.run(main())
获取用户详情 🟢
异步方法,用于获取指定用户的详细信息。
参数 | 类型 | 说明 |
---|---|---|
uid | str | 用户ID |
返回 | 类型 | 说明 |
---|---|---|
UserDetailFilter | JsonModel | 用户详细信息过滤器,包含用户详细信息的_to_raw、_to_dict方法 |
py
import asyncio
from f2.apps.weibo.handler import WeiboHandler
from f2.log.logger import logger
kwargs = {
"headers": {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36 Edg/130.0.0.0",
"Referer": "https://www.weibo.com/",
},
"proxies": {"http://": None, "https://": None},
"cookie": "YOUR_COOKIE_HERE",
}
async def main():
user = await WeiboHandler(kwargs).fetch_user_detail(uid="2265830070")
# logger.info(
# f"用户ID: {uid}, 生日: {user.birthday}, 性别: {user.gender}, 地区: {user.location}, 个性签名: {user.description_raw}, 注册时间: {user.create_at}, 视频播放次数: {user.video_play_count}"
# )
logger.info("=================_to_raw================")
logger.info(user._to_raw())
# logger.info("=================_to_dict===============")
# logger.info(user._to_dict())
if __name__ == "__main__":
asyncio.run(main())
提取微博用户id 🟢
异步方法,用于从微博链接中提取并返回用户ID。
参数 | 类型 | 说明 |
---|---|---|
url | str | 微博链接 |
返回 | 类型 | 说明 |
---|---|---|
uid | str | 用户ID |
py
import asyncio
from f2.apps.weibo.handler import WeiboHandler
from f2.log.logger import logger
kwargs = {
"headers": {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36 Edg/130.0.0.0",
"Referer": "https://www.weibo.com/",
},
"proxies": {"http://": None, "https://": None},
}
async def main():
uid = await WeiboHandler(kwargs).extract_weibo_uid(
url="https://weibo.com/u/2265830070"
)
logger.info(f"微博用户ID: {uid}")
if __name__ == "__main__":
asyncio.run(main())
单个微博数据 🟢
异步方法,用于获取单条微博的数据。
参数 | 类型 | 说明 |
---|---|---|
weibo_id | str | 微博ID |
返回 | 类型 | 说明 |
---|---|---|
WeiboDetailFilter | JsonModel | 微博详细信息过滤器,包含微博详细信息的_to_raw、_to_dict方法 |
py
import asyncio
from f2.apps.weibo.handler import WeiboHandler
from f2.log.logger import logger
kwargs = {
"headers": {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36 Edg/130.0.0.0",
"Referer": "https://www.weibo.com/",
},
"proxies": {"http://": None, "https://": None},
"cookie": "YOUR_COOKIE_HERE",
}
async def main():
weibo = await WeiboHandler(kwargs).fetch_one_weibo(weibo_id="O8DM0BLLm")
# logger.info(
# f"微博ID: {weibo.weibo_id}, 微博文案: {weibo.desc}, 作者昵称: {weibo.nickname}, 发布时间: {weibo.weibo_created_at}"
# )
logger.info("=================_to_raw================")
logger.info(weibo._to_raw())
# logger.info("=================_to_dict===============")
# logger.info(weibo._to_dict())
if __name__ == "__main__":
asyncio.run(main())
用户微博数据 🟢
异步方法,用于获取用户微博数据。
参数 | 类型 | 说明 |
---|---|---|
uid | str | 用户ID |
page | int | 页数 |
feature | int | 微博类型 |
since_id | str | 起始微博ID |
max_counts | int | 最大微博数 |
返回 | 类型 | 说明 |
---|---|---|
UserWeiboFilter | JsonModel | 用户微博信息过滤器,包含用户微博信息的_to_raw、_to_dict方法 |
py
import asyncio
from f2.apps.weibo.handler import WeiboHandler
from f2.log.logger import logger
kwargs = {
"headers": {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36 Edg/130.0.0.0",
"Referer": "https://www.weibo.com/",
},
"proxies": {"http://": None, "https://": None},
"cookie": "YOUR_COOKIE_HERE",
}
async def main():
async for weibo_list in WeiboHandler(kwargs).fetch_user_weibo(
uid="2265830070",
page=1,
feature=1,
since_id="",
max_counts=20,
):
# logger.info(
# f"微博ID: {weibo_list.weibo_id}, 微博文案: {weibo_list.weibo_desc_raw}, 作者昵称: {weibo_list.weibo_user_name_raw}, 发布时间: {weibo_list.weibo_created_at}"
# )
logger.info("=================_to_raw================")
logger.info(weibo_list._to_raw())
# logger.info("=================_to_dict===============")
# logger.info(weibo_list._to_dict())
# logger.info("=================_to_list===============")
# logger.info(weibo_list._to_list())
if __name__ == "__main__":
asyncio.run(main())
utils接口列表
管理客户端配置 🟢
类方法,用于管理客户端配置。
参数 | 类型 | 说明 |
---|---|---|
无 | 无 | 无 |
返回 | 类型 | 说明 |
---|---|---|
配置文件值 | Any | 配置文件值 |
py
from f2.apps.weibo.utils import ClientConfManager
if __name__ == "__main__":
print("Client Configuration:")
print(ClientConfManager.client())
print("Client Configuration version:")
print(ClientConfManager.conf_version())
print("Client Configuration user-agent:")
print(ClientConfManager.user_agent())
生成访客 Cookie 🟢
类方法,用于生成访客 Cookie。
参数 | 类型 | 说明 |
---|---|---|
无 | 无 | 无 |
返回 | 类型 | 说明 |
---|---|---|
visitor_cookie | str | 访客 Cookie |
py
import asyncio
from f2.apps.weibo.utils import VisitorManager
from f2.log.logger import logger
async def main():
visitor_cookie = await VisitorManager.gen_visitor()
logger.info(f"visitor_cookie: {visitor_cookie}")
if __name__ == "__main__":
asyncio.run(main())
提取微博 ID 🟢
类方法,从微博链接中提取微博ID。
参数 | 类型 | 说明 |
---|---|---|
url | str | 微博链接 |
返回 | 类型 | 说明 |
---|---|---|
weibo_id | str | 微博ID |
py
import asyncio
from f2.apps.weibo.utils import WeiboIdFetcher
from f2.log.logger import logger
async def main():
raw_url = "https://weibo.com/2265830070/O8DM0BLLm"
return await WeiboIdFetcher.get_weibo_id(raw_url)
if __name__ == "__main__":
logger.info(asyncio.run(main()))
提取列表微博 ID 🟢
类方法,从微博链接列表中提取微博ID。
参数 | 类型 | 说明 |
---|---|---|
urls | List[str] | 微博链接列表 |
返回 | 类型 | 说明 |
---|---|---|
weibo_ids | List[str] | 微博ID列表 |
py
import asyncio
from f2.apps.weibo.utils import WeiboIdFetcher
from f2.utils.utils import extract_valid_urls
from f2.log.logger import logger
async def main():
raw_urls = [
"https://weibo.com/2265830070/O8DM0BLLm",
"https://weibo.com/2265830070/O8DM0BLLm/",
"https://weibo.com/2265830070/O8DM0BLLm/aasfasg",
"https://weibo.com/2265830070/O8DM0BLLm/?test=123",
"https://weibo.cn/2265830070/O8DM0BLLm/",
"https://weibo.cn/status/5020595169001740/?test=123",
"https://www.weibo.com/2265830070/5020595169001740",
]
# 提取有效URL
urls = extract_valid_urls(raw_urls)
# 对于URL列表
return await WeiboIdFetcher.get_all_weibo_id(urls)
if __name__ == "__main__":
logger.info(asyncio.run(main()))
提取微博用户 ID 🟢
类方法,从微博链接中提取用户ID。
参数 | 类型 | 说明 |
---|---|---|
url | str | 微博主页链接 |
返回 | 类型 | 说明 |
---|---|---|
uid | str | 用户ID |
py
import asyncio
from f2.apps.weibo.utils import WeiboUidFetcher
from f2.log.logger import logger
async def main():
raw_url = "https://weibo.com/u/2265830070"
return await WeiboUidFetcher.get_weibo_uid(raw_url)
if __name__ == "__main__":
logger.info(asyncio.run(main()))
❕ 提示
- 使数据接口方法里的
extract_weibo_uid
方法可以更全面的处理微博链接,该方法仅适用与非昵称链接的提取。
提取列表微博用户 ID 🟢
类方法,从微博链接列表中提取用户ID。
参数 | 类型 | 说明 |
---|---|---|
urls | List[str] | 微博主页链接列表 |
返回 | 类型 | 说明 |
---|---|---|
uids | List[str] | 用户ID列表 |
py
import asyncio
from f2.apps.weibo.utils import WeiboUidFetcher
from f2.utils.utils import extract_valid_urls
from f2.log.logger import logger
async def main():
raw_urls = [
"https://weibo.com/u/2265830070",
"https://weibo.com/u/2265830070/",
"https://weibo.com/u/2265830070/?test=123",
"https://weibo.com/2265830070",
"https://weibo.com/2265830070/",
"https://weibo.com/2265830070/?test=123",
"https://weibo.com/2265830070/O8DM0BLLm",
"https://weibo.com/2265830070/O8DM0BLLm/",
"https://weibo.com/2265830070/O8DM0BLLm/?test=123",
"https://weibo.com/2265830070/O8DM0BLLm/%$#",
"https://weibo.com/2265830070/O8DM0BLLm/" + "a" * 2048,
"https://m.weibo.cn/2265830070/5020595169001740",
"https://m.weibo.cn/2265830070/5020595169001740?test=123",
"https://m.weibo.cn/2265830070/5020595169001740/",
"https://m.weibo.cn/2265830070/5020595169001740/?test=123",
]
# 提取有效URL
urls = extract_valid_urls(raw_urls)
# 对于URL列表
return await WeiboUidFetcher.get_all_weibo_uid(urls)
if __name__ == "__main__":
logger.info(asyncio.run(main()))
提取微博用户昵称 🟢
类方法,从微博链接中提取用户昵称。
参数 | 类型 | 说明 |
---|---|---|
url | str | 微博主页链接 |
返回 | 类型 | 说明 |
---|---|---|
screen_name | str | 用户昵称 |
py
import asyncio
from f2.apps.weibo.utils import WeiboScreenNameFetcher
from f2.log.logger import logger
async def main():
raw_url = "https://weibo.com/n/自我充电功能丧失"
return await WeiboScreenNameFetcher.get_weibo_screen_name(raw_url)
if __name__ == "__main__":
logger.info(asyncio.run(main()))
提取列表微博用户昵称 🟢
类方法,从微博链接列表中提取用户昵称。
参数 | 类型 | 说明 |
---|---|---|
urls | List[str] | 微博主页链接列表 |
返回 | 类型 | 说明 |
---|---|---|
screen_names | List[str] | 用户昵称列表 |
py
import asyncio
from f2.apps.weibo.utils import WeiboScreenNameFetcher
from f2.utils.utils import extract_valid_urls
from f2.log.logger import logger
async def main():
raw_urls = [
"https://weibo.com/n/%E8%87%AA%E6%88%91%E5%85%85%E7%94%B5%E5%8A%9F%E8%83%BD%E4%B8%A7%E5%A4%B1",
"https://weibo.com/n/%E8%87%AA%E6%88%91%E5%85%85%E7%94%B5%E5%8A%9F%E8%83%BD%E4%B8%A7%E5%A4%B1/",
"https://weibo.com/n/%E8%87%AA%E6%88%91%E5%85%85%E7%94%B5%E5%8A%9F%E8%83%BD%E4%B8%A7%E5%A4%B1?test=123",
"https://weibo.com/n/%E8%87%AA%E6%88%91%E5%85%85%E7%94%B5%E5%8A%9F%E8%83%BD%E4%B8%A7%E5%A4%B1/?test=123",
"https://weibo.com/n/自我充电功能丧失",
"https://weibo.com/n/自我充电功能丧失/",
"https://weibo.com/n/自我充电功能丧失?test=123",
"https://weibo.com/n/自我充电功能丧失/?test=123",
]
# 提取有效URL
urls = extract_valid_urls(raw_urls)
# 对于URL列表
return await WeiboScreenNameFetcher.get_all_weibo_screen_name(urls)
if __name__ == "__main__":
logger.info(asyncio.run(main()))
ℹ️ 提示
F2
会自动处理编码,无需担心中文字符转义问题。
全局格式化文件名 🟢
根据配置文件的全局格式化文件名。
📄 格式化文件名规则
Windows
文件名长度限制为255
个字符, 开启了长文件名支持后为32,767
个字符。Unix
文件名长度限制为255
个字符。- 取去除后的
20
个字符, 加上后缀, 一般不会超过255
个字符。 - 开发者可以根据自己的需求自定义
custom_fields
字段,实现自定义文件名。
参数 | 类型 | 说明 |
---|---|---|
naming_template | str | 文件的命名模板 |
weibo_data | dict | 作品数据的字典 |
custom_fields | dict | 用户自定义字段, 用于替代默认的字段值 |
返回 | 类型 | 说明 |
---|---|---|
file_name | str | 格式化后的文件名 |
py
import asyncio
from f2.apps.weibo.handler import WeiboHandler
from f2.apps.weibo.utils import format_file_name
async def main():
# 文件名模板
kwargs = {
"headers": {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36 Edg/130.0.0.0",
"Referer": "https://www.weibo.com/",
},
"naming": "{create}_{desc}_{weibo_id}",
"cookie": "YOUR_COOKIE_HERE",
}
# 单作品的数据
weibo_data = await WeiboHandler(kwargs).fetch_one_weibo(weibo_id="LvFY288c0")
# 格式化后的文件名
print(format_file_name(kwargs.get("naming"), weibo_data._to_dict()) + "_weibo")
# 文件名模板
kwargs = {
# ...
"naming": "{create}_{desc}_{weibo_id}_{location}",
# ...
}
# 用户自定义字段
custom_fields = {"location": "Guang dong"}
# 格式化后的自定义文件名
print(
format_file_name(kwargs.get("naming"), weibo_data._to_dict(), custom_fields)
+ "_weibo"
)
if __name__ == "__main__":
asyncio.run(main())
创建用户目录 🟢
用于创建用户目录,如果目录已存在则不创建。
📂 用户目录结构
如果未在配置文件中指定路径,则默认为 Download
。支持绝对与相对路径。
bash
├── Download
│ ├── weibo
│ │ ├── post
│ │ │ ├── user_nickname
│ │ │ │ ├── 2023-12-31_23-59-59_desc
│ │ │ │ │ ├── 2023-12-31_23-59-59_desc-video.mp4
│ │ │ │ │ ├── 2023-12-31_23-59-59_desc-desc.txt
│ │ │ │ │ └── 2023-12-31_23-59-59_desc-cover.jpg
│ │ │ │ │ └── ......
│ │ ├── like
│ │ ├── ...
参数 | 类型 | 说明 |
---|---|---|
kwargs | dict | cli配置文件 |
nickname | Union[str, int] | 用户昵称 |
返回 | 类型 | 说明 |
---|---|---|
user_path | Path | 用户目录路径对象 |
py
from f2.apps.weibo.utils import create_user_folder
kwargs = {
"headers": {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36 Edg/130.0.0.0",
"Referer": "https://www.weibo.com/",
},
"proxies": {"http": None, "https": None},
"cookie": "YOUR_COOKIE_HERE",
"path": "Download",
"mode": "post",
}
if __name__ == "__main__":
current_nickname = "New Nickname"
print(create_user_folder(kwargs, current_nickname))
# X:\......\Download\weibo\post\New Nickname
重命名用户目录 🟢
用于重命名用户目录。
参数 | 类型 | 说明 |
---|---|---|
old_path | Path | 旧的用户目录路径对象 |
new_nickname | str | 新的用户昵称 |
返回 | 类型 | 说明 |
---|---|---|
new_path | Path | 新的用户目录路径对象 |
py
import asyncio
from f2.apps.weibo.db import AsyncUserDB
from f2.apps.weibo.utils import rename_user_folder
from f2.apps.weibo.handler import WeiboHandler
kwargs = {
"headers": {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36 Edg/130.0.0.0",
"Referer": "https://www.weibo.com/",
},
"proxies": {"http://": None, "https://": None},
"cookie": "YOUR_COOKIE_HERE",
"path": "Download",
"mode": "post",
}
async def main():
uid = "2265830070"
async with AsyncUserDB("weibo_users.db") as audb:
local_user_path = await WeiboHandler(kwargs).get_or_add_user_data(
kwargs, uid, audb
)
print(local_user_path)
# X:\......\Download\weibo\post\阿里多多酱
current_nickname = "New Nickname"
new_user_path = rename_user_folder(local_user_path, current_nickname)
print(new_user_path)
# X:\......\Download\weibo\post\New Nickname
if __name__ == "__main__":
asyncio.run(main())
💡 提示
如果目录不存在会先创建该用户目录再重命名。
创建或重命名用户目录 🟢
用于创建或重命名用户目录。为上面2个接口的组合。
参数 | 类型 | 说明 |
---|---|---|
kwargs | dict | cli配置文件 |
local_user_data | dict | 本地用户数据 |
current_nickname | str | 当前用户昵称 |
返回 | 类型 | 说明 |
---|---|---|
user_path | Path | 用户目录路径对象 |
ℹ️ 提示
该接口很好的解决了用户改名之后重复创建目录的问题。集成在 handler
接口中。开发者无需关心,直接调用 handler
的数据接口即可。
提取微博文案 🟢
用于提取微博文案,排除最后的链接。
参数 | 类型 | 说明 |
---|---|---|
text | str | 微博文案 |
返回 | 类型 | 说明 |
---|---|---|
text | str | 提取后的微博文案 |
py
from f2.apps.weibo.utils import extract_desc
from f2.log.logger import logger
def main():
raw_desc = {
"超大颗花生汤圆[舔屏] http://t.cn/A6nqzsFe",
"分享视频 http://t.cn/A6nNyQyS ",
"香宝宝 http://t.cn/A6mwArY7 ",
" 总有人类想要变成小猫咪^⌯𖥦⌯^ ੭ http://t.cn/A6n1zhGt ",
"过来挨踢[亲亲] http://t.cn/A6ndh6PS ",
"单独的文案 ", # 没有链接的情况
"http://t.cn/A6nqzsFe", # 只有链接的情况
" ", # 空字符串或空白内容
}
for text_raw in raw_desc:
desc = extract_desc(text_raw)
logger.info(f"提取结果: {desc}")
if __name__ == "__main__":
main()
crawler接口列表
用户信息接口 🟢
用于获取用户信息。
参数 | 类型 | 说明 |
---|---|---|
params | UserInfo | 户信息接口模型 |
返回 | 类型 | 说明 |
---|---|---|
_fetch_get_json | dict | 用户信息数据 |
用户详情接口 🟢
用于获取用户详情。
参数 | 类型 | 说明 |
---|---|---|
params | UserDetail | 用户详情接口模型 |
返回 | 类型 | 说明 |
---|---|---|
_fetch_get_json | dict | 用户详情数据 |
用户微博接口 🟢
用于获取用户微博。
参数 | 类型 | 说明 |
---|---|---|
params | UserWeibo | 用户微博接口模型 |
返回 | 类型 | 说明 |
---|---|---|
_fetch_get_json | dict | 用户微博数据 |
单条微博接口 🟢
用于获取单条微博。
参数 | 类型 | 说明 |
---|---|---|
params | WeiboDetail | 单条微博接口模型 |
返回 | 类型 | 说明 |
---|---|---|
_fetch_get_json | dict | 单条微博数据 |