MeidiaCrawler初体验——一个cs小白的尝试
下载/运行
- 第一次下载:
使用浏览器访问:github.com/NanmiCoder/… ,下载 ZIP 文件 ,随后解压到本地D盘 。
- 已下载直接运行:
打开终端,在项目文件夹 D:\MediaCrawler\MediaCrawler-main 中,按住Shift键并右键点击空白处,选择 “在此处打开PowerShell窗口” 或 “在此处打开命令提示符窗口”。
配置/激活环境
- 进入项目目录 cd /path/to/MediaCrawler/MediaCrawler-main
- 创建虚拟环境(推荐) python -m venv venv
- 激活虚拟环境
Windows系统: venv\Scripts\activate
在这里可能会有Windows PowerShell 执行策略限制,如:
- PS D:\MediaCrawler> venv\Scripts\activate venv\Scripts\activate : 无法加载文件 D:\MediaCrawler\venv\Scripts\Activate.ps1,因为在此系统上禁止运行脚本。有关详细信 息,请参阅 https:/go.microsoft.com/fwlink/?LinkID=135170 中的 about_Execution_Policies。 所在位置 行:1 字符:
- 临时允许脚本执行后(仅当前会话),再激活虚拟环境
所以可以这样激活
Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process
venv\Scripts\activate
Linux/Mac系统: source venv/bin/activate
-
安装依赖
pip install -r requirements.txt -i pypi.tuna.tsinghua.edu.cn/simple如果安装失…
如果安装失败,请确认你的Python版本
python --version
如果输出是 Python 3.13.x 或更高,可以降低python的版本至3.11.x 版本
流程如下:
第一步:确保安装了Python 3.11
访问 Python官网: www.python.org/downloads/
找到 Python 3.11.x 版本(例如 3.11.9)的Windows安装包并下载。
运行安装程序,务必勾选 “Add python.exe to PATH”,然后安装。
第二步:创建并激活基于Python 3.11的新虚拟环境 在你的项目目录D:\MediaCrawler\MediaCrawler-main 中操作:
先停用之前的
deactivate
使用 python3.11(或你安装的3.11.x版本)创建环境
python3.11 -m venv venv311
激活新环境
venv311\Scripts\activate
运行
可以先查看具体命令:
python main.py --help
第一次运行前的建议
-
先运行一个简单的测试 powershell
测试爬取少量数据(小红书,搜索"测试")
python main.py --platform xhs --type search --keywords "测试" --start 1
-
如果平台需要登录(如抖音/微博) 二维码登录:运行命令后会显示二维码,用手机APP扫描
Cookie登录:需要先获取Cookie,然后通过 --cookies "你的cookie值" 参数传入
-
查看数据输出 默认会保存在项目目录的 output 或 data 文件夹中,格式取决于 --save_data_option 参数。
数据抓取时可能会将两次不同关键词的抓取内容放在一起,想要进行区分可以这样操作
我们只需要在 tools/async_file_writer.py 文件的最顶部添加一个任务名变量,然后修改 _get_file_path 方法中的 base_path 即可。
!!!每次运行新任务前,手动修改此行!!!
TASK_NAME = "美国斩杀线"
import asyncio import csv import json import os import pathlib from typing import Dict, List import aiofiles import config from tools.utils import utils from tools.words import AsyncWordCloudGenerator
class AsyncFileWriter: def _init(self, platform: str, crawler_type: str): self.lock = asyncio.Lock() self.platform = platform self.crawler_type = crawler_type self.wordcloud_generator = AsyncWordCloudGenerator() if config.ENABLE_GET_WORDCLOUD else None
def _get_file_path(self, file_type: str, item_type: str) -> str:
修改前:base_path = f"data/{self.platform}/{file_type}"
修改后 ↓↓↓
base_path = f"data/{TASK_NAME}/{self.platform}/{file_type}" pathlib.Path(base_path).mkdir(parents=True, exist_ok=True) file_name = f"{self.crawler_type} {item_type} {utils.get_current_date()}.{file_type}" return f"{base_path}/{file_name}"
这样只要在每次使用前,更改第一行的关键词就可以将不同关键词的数据分类存放。