From 96309dcfee6c23f6ee97428a74e3087082d5f221 Mon Sep 17 00:00:00 2001 From: Relakkes Date: Sun, 17 Mar 2024 14:50:10 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=B0=8F=E7=BA=A2=E4=B9=A6=E5=88=9B?= =?UTF-8?q?=E4=BD=9C=E8=80=85=E5=8A=9F=E8=83=BD=E6=95=B0=E6=8D=AE=E8=8E=B7?= =?UTF-8?q?=E5=8F=96=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 49 ++++++------- config/base_config.py | 6 +- media_platform/xhs/client.py | 134 +++++++++++++++++++++-------------- media_platform/xhs/core.py | 80 +++++++-------------- store/xhs/__init__.py | 3 +- 5 files changed, 133 insertions(+), 139 deletions(-) diff --git a/README.md b/README.md index e406e7e..72f84da 100644 --- a/README.md +++ b/README.md @@ -18,13 +18,13 @@ 成为赞助者,展示你的产品在这里,联系作者:relakkes@gmail.com ## 功能列表 -| 平台 | Cookie 登录 | 二维码登录 | 手机号登录 | 关键词搜索 | 指定视频/帖子 ID 爬取 | 登录状态缓存 | 数据保存 | IP 代理池 | 滑块验证码 | -|:---:|:---------:|:-----:|:-----:|:-----:|:-------------:|:------:|:----:|:------:|:-----:| -| 小红书 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✕ | -| 抖音 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | -| 快手 | ✅ | ✅ | ✕ | ✅ | ✅ | ✅ | ✅ | ✅ | ✕ | -| B 站 | ✅ | ✅ | ✕ | ✅ | ✅ | ✅ | ✅ | ✅ | ✕ | -| 微博 | ✅ | ✅ | ✕ | ✅ | ✅ | ✅ | ✅ | ✅ | ✕ | +| 平台 | Cookie 登录 | 二维码登录 | 指定创作者主页 | 关键词搜索 | 指定视频/帖子 ID 爬取 | 登录状态缓存 | 数据保存 | IP 代理池 | 滑块验证码 | +|:---:|:---------:|:-----:|:-------:|:-----:|:-------------:|:------:|:----:|:------:|:-----:| +| 小红书 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✕ | +| 抖音 | ✅ | ✅ | ✕ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | +| 快手 | ✅ | ✅ | ✕ | ✅ | ✅ | ✅ | ✅ | ✅ | ✕ | +| B 站 | ✅ | ✅ | ✕ | ✅ | ✅ | ✅ | ✅ | ✅ | ✕ | +| 微博 | ✅ | ✅ | ✕ | ✅ | ✅ | ✅ | ✅ | ✅ | ✕ | ## 使用方法 @@ -93,24 +93,25 @@ PS:如果打赏时请备注捐赠者,如有遗漏请联系我添加(有时候消息多可能会漏掉,十分抱歉) -| 捐赠者 | 捐赠金额 | 捐赠日期 | -|-------------|-------|------------| +| 捐赠者 | 捐赠金额 | 捐赠日期 | +|------------|-------|------------| +| *诚 | 20 元 | 2024-03-17 | | Strem Gamer | 20 元 | 2024-03-16 | -| *鑫 | 20 元 | 2024-03-14 | -| Yuzu | 20 元 | 2024-03-07 | -| **宁 | 100 元 | 2024-03-03 | -| **媛 | 20 元 | 2024-03-03 | -| Scarlett | 20 元 | 2024-02-16 | -| Asun | 20 元 | 2024-01-30 | -| 何* | 100 元 | 2024-01-21 | -| allen | 20 元 | 2024-01-10 | -| llllll | 20 元 | 2024-01-07 | -| 邝*元 | 20 元 | 2023-12-29 | -| 50chen | 50 元 | 2023-12-22 | -| xiongot | 20 元 | 2023-12-17 | -| atom.hu | 20 元 | 2023-12-16 | -| 一呆 | 20 元 | 2023-12-01 | -| 坠落 | 50 元 | 2023-11-08 | +| *鑫 | 20 元 | 2024-03-14 | +| Yuzu | 20 元 | 2024-03-07 | +| **宁 | 100 元 | 2024-03-03 | +| **媛 | 20 元 | 2024-03-03 | +| Scarlett | 20 元 | 2024-02-16 | +| Asun | 20 元 | 2024-01-30 | +| 何* | 100 元 | 2024-01-21 | +| allen | 20 元 | 2024-01-10 | +| llllll | 20 元 | 2024-01-07 | +| 邝*元 | 20 元 | 2023-12-29 | +| 50chen | 50 元 | 2023-12-22 | +| xiongot | 20 元 | 2023-12-17 | +| atom.hu | 20 元 | 2023-12-16 | +| 一呆 | 20 元 | 2023-12-01 | +| 坠落 | 50 元 | 2023-11-08 | ## 运行报错常见问题Q&A > 遇到问题先自行搜索解决下,现在AI很火,用ChatGPT大多情况下能解决你的问题 [免费的ChatGPT](https://sider.ai/invited?c=8e03db1a973401fdf114ed9cf9f8c183) diff --git a/config/base_config.py b/config/base_config.py index da7885a..333c216 100644 --- a/config/base_config.py +++ b/config/base_config.py @@ -4,7 +4,7 @@ KEYWORDS = "python,golang" LOGIN_TYPE = "qrcode" # qrcode or phone or cookie COOKIES = "" SORT_TYPE = "popularity_descending" # 具体值参见media_platform.xxx.field下的枚举值,展示只支持小红书 -CRAWLER_TYPE = "search" +CRAWLER_TYPE = "search" # 爬取类型,search(关键词搜索) | detail(帖子相亲)| creator(创作者主页数据) # 是否开启 IP 代理 ENABLE_IP_PROXY = False @@ -70,8 +70,6 @@ WEIBO_SPECIFIED_ID_LIST = [ # 指定小红书创作者ID列表 XHS_CREATOR_ID_LIST = [ - "59d8cb33de5fb4696bf17217", - "61b87386000000001000b18b", - "5e8558100000000001005bc5", + "63e36c9a000000002703502b", # ........................ ] diff --git a/media_platform/xhs/client.py b/media_platform/xhs/client.py index 72e9d89..7586578 100644 --- a/media_platform/xhs/client.py +++ b/media_platform/xhs/client.py @@ -1,7 +1,7 @@ import asyncio import json import re -from typing import Callable, Dict, List, Optional +from typing import Callable, Dict, List, Optional, Union, Any from urllib.parse import urlencode import httpx @@ -28,6 +28,7 @@ class XHSClient: self.timeout = timeout self.headers = headers self._host = "https://edith.xiaohongshu.com" + self._domain = "https://www.xiaohongshu.com" self.IP_ERROR_STR = "网络连接异常,请检查网络设置或重启试试" self.IP_ERROR_CODE = 300012 self.NOTE_ABNORMAL_STR = "笔记状态异常,请稍后查看" @@ -63,7 +64,7 @@ class XHSClient: self.headers.update(headers) return self.headers - async def request(self, method, url, **kwargs) -> Dict: + async def request(self, method, url, **kwargs) -> Union[str, Any]: """ 封装httpx的公共请求方法,对请求响应做一些处理 Args: @@ -82,10 +83,10 @@ class XHSClient: method, url, timeout=self.timeout, **kwargs ) - + if return_response: return response.text - + data: Dict = response.json() if data["success"]: return data.get("data", data.get("success", {})) @@ -186,56 +187,6 @@ class XHSClient: } return await self.post(uri, data) - async def get_creator_info_and_notes(self, creator: str) -> Dict: - """ - 获取博主的信息和第一页的笔记 - Args: - creator: 博主ID - Returns: - {"creator":{}, "notes":[]} - """ - path = '/user/profile/'+creator - content = await self.request(method="GET", url=f"https://www.xiaohongshu.com{path}", return_response=True) - match = re.search(r'