小红书爬虫采集工具,采集小红书作品主页链接,评论内容提取易语言框架

简介: 这个是今年5月份给客户定制开发的一个工具,前前后后大概花费了半个月的时间,改了又写,

下载地址:http://m.pan38.com/download.php?code=SLWPSL 提取码:3332

这个是今年5月份给客户定制开发的一个工具,前前后后大概花费了半个月的时间,改了又写,写了又改,那么我为啥现在要给大家分享出来呢,因为这个源码其实还是存在一些值得大家学习的部分,毕竟留着也没啥用,干脆分享出来。

源码部分:【UI部分和控制部分用易语言 核心采集调用py代码,仅供学习】

易语言部分代码:

版本 2

.程序集 小红书爬虫工具

.程序集变量 python进程, 整数型

.程序集变量 输出管道, 整数型

.程序集变量 输入管道, 整数型

.程序集变量 安全属性, SECURITY_ATTRIBUTES

.子程序 _启动子程序, 整数型

.局部变量 用户主页链接, 文本型

.局部变量 输出文件, 文本型

.局部变量 命令行, 文本型

' 初始化安全属性

安全属性.nLength = 12

安全属性.lpSecurityDescriptor = 0

安全属性.bInheritHandle = 真

' 创建管道

CreatePipe (输出管道, 输入管道, 安全属性, 0)

' 设置启动信息

.局部变量 启动信息, STARTUPINFO

启动信息.cb = 68

启动信息.dwFlags = 位或 (1, 256) ' STARTF_USESHOWWINDOW|STARTF_USESTDHANDLES

启动信息.wShowWindow = 0 ' SW_HIDE

启动信息.hStdOutput = 输出管道

启动信息.hStdError = 输出管道

' 设置进程信息

.局部变量 进程信息, PROCESS_INFORMATION

' 构建Python命令行

命令行 = "python xhs_spider.py " + 用户主页链接 + " > output.txt"

' 创建Python进程

CreateProcess (0, 命令行, 0, 0, 真, 0, 0, 0, 启动信息, 进程信息)

' 等待进程结束

WaitForSingleObject (进程信息.hProcess, -1)

' 读取输出

.局部变量 输出内容, 文本型

.局部变量 读取字节数, 整数型

.局部变量 缓冲区, 字节集

缓冲区 = 取空白字节集 (4096)

ReadFile (输出管道, 缓冲区, 取字节集长度 (缓冲区), 读取字节数, 0)

输出内容 = 到文本 (缓冲区)

' 关闭句柄

CloseHandle (输出管道)

CloseHandle (输入管道)

CloseHandle (进程信息.hThread)

CloseHandle (进程信息.hProcess)

' 显示结果

信息框 ("数据采集完成!结果已保存到output.txt", 0, "小红书爬虫工具")

返回 (0)

.子程序 采集小红书数据, 逻辑型

.参数 用户主页链接, 文本型

.局部变量 结果, 逻辑型

' 调用Python脚本

运行 ("python xhs_spider.py " + 用户主页链接, 假, )

结果 = 取反 (取反 (结果)) ' 简单模拟调用结果

返回 (结果)

.子程序 解析JSON数据, 整数型

.参数 JSON文件, 文本型

.局部变量 文件号, 整数型

.局部变量 JSON内容, 文本型

.局部变量 解析结果, 整数型

文件号 = 打开文件 (JSON文件, , )

JSON内容 = 读入文本 (文件号, )

关闭文件 (文件号)

' 这里应该添加JSON解析代码

' 由于易语言原生不支持JSON解析,需要自行实现或使用第三方模块

返回 (解析结果)

Python部分:

import requests

import json

import time

import random

from bs4 import BeautifulSoup

from urllib.parse import urlparse

class XHSSpider:

def init(self):

self.headers = {

  'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',

  'Cookie': 'your_cookie_here'

}

self.session = requests.Session()

self.base_url = "https://www.xiaohongshu.com"

def get_note_links(self, user_url):

"""获取用户主页所有笔记链接"""

note_links = []

page = 1

while True:

  params = {

    'page': page,

    'pageSize': 20

  }

  try:

    response = self.session.get(user_url, headers=self.headers, params=params)

    soup = BeautifulSoup(response.text, 'html.parser')

    links = soup.find_all('a', {'class': 'note-item'})

    if not links:

      break

    for link in links:

      note_links.append(self.base_url + link['href'])

    page += 1

    time.sleep(random.uniform(1, 3))

  except Exception as e:

    print(f"获取笔记链接出错: {e}")

    break

return note_links

def get_note_detail(self, note_url):

"""获取笔记详情"""

try:

  response = self.session.get(note_url, headers=self.headers)

  soup = BeautifulSoup(response.text, 'html.parser')



  # 提取笔记基本信息

  title = soup.find('h1', {'class': 'title'}).text.strip()

  author = soup.find('a', {'class': 'author'}).text.strip()

  likes = soup.find('span', {'class': 'like-count'}).text.strip()



  # 提取评论

  comments = []

  comment_items = soup.find_all('div', {'class': 'comment-item'})

  for item in comment_items:

    user = item.find('a', {'class': 'user'}).text.strip()

    content = item.find('div', {'class': 'content'}).text.strip()

    time_str = item.find('span', {'class': 'time'}).text.strip()

    comments.append({

      'user': user,

      'content': content,

      'time': time_str

    })



  return {

    'title': title,

    'author': author,

    'likes': likes,

    'comments': comments,

    'url': note_url

  }

except Exception as e:

  print(f"获取笔记详情出错: {e}")

  return None

def save_to_json(self, data, filename):

"""保存数据到JSON文件"""

with open(filename, 'w', encoding='utf-8') as f:

  json.dump(data, f, ensure_ascii=False, indent=4)

def run(self, user_url):

"""主运行方法"""

print("开始采集小红书数据...")

note_links = self.get_note_links(user_url)

print(f"共获取到{len(note_links)}篇笔记")



all_data = []

for link in note_links:

  note_data = self.get_note_detail(link)

  if note_data:

    all_data.append(note_data)

    print(f"已采集: {note_data['title']}")

  time.sleep(random.uniform(2, 5))



self.save_to_json(all_data, 'xhs_data.json')

print("数据采集完成,已保存到xhs_data.json")
相关文章
|
人工智能 安全 网络安全
黑客工具FraudGPT
【2月更文挑战第13天】黑客工具FraudGPT
810 2
黑客工具FraudGPT
|
算法 Unix Linux
【C/C++ 实用工具】性能分析工具一览
【C/C++ 实用工具】性能分析工具一览
1424 0
|
11月前
|
数据采集 数据处理 数据安全/隐私保护
小红书爬虫采集工具, 小红书截流获客软件,直播间评论作品提取软件
这个项目包含三个主要模块:爬虫核心、数据处理和代理管理。使用时需要安装requests
|
3月前
|
编解码 文字识别 安全
AutoGod:安卓5-16全兼容!一站式自动化框架,开发效率直接拉满
Auto-God是一站式安卓自动化框架,兼容Android 5–16,覆盖手势、视觉(OCR/YOLO)、网络、UI(Material3悬浮界面)、拓展及安全(防HOOK/抓包/破解)全能力,开箱即用,真机/模拟器/云手机全支持,让自动化开发更简单、高效、安全。
943 1
|
3月前
|
人工智能 自然语言处理 Linux
中文办公场景利器:OpenClaw阿里云/本地部署、WPS技能使用+免费大模型API配置解析
在国内办公场景中,WPS作为主流办公软件,覆盖文档编辑、数据处理、演示制作等核心需求,但格式兼容、中文排版、协作审阅等痛点常困扰用户。2026年,OpenClaw(曾用名Clawdbot)推出专为中文办公优化的WPS技能插件,通过AI辅助解决格式兼容、排版规范、流程指导等问题,成为提升办公效率的核心工具。同时,OpenClaw支持阿里云云端7×24小时部署与本地MacOS/Linux/Windows11部署,可灵活对接阿里云千问或免费大模型API,兼顾便捷性与实用性。
1428 0
|
9月前
|
jenkins Shell 测试技术
|
11月前
|
算法 API Windows
一键解除机器码工具,永久修改机器码工具, 破解一机一注册码软件
这段代码实现了硬件信息获取和伪装功能,包含三个模块:硬件信息获取、伪装算法实现和主程序入口
|
11月前
|
Shell
抖音直播录制工具,快手小红书直播录屏工具,autojs框架
该实现包含完整的UI交互、平台适配、录制控制等功能模块,使用AutoJS框架实现移动端自动化操
|
11月前
|
存储
小红书关注收藏点赞脚本,全自动稳定框架插件,autojs完整源码分享
其实这个源码你如果运行的他,他可以跟你跑几天几夜不休息的,因为我自己试过了,他真的是能稳定的进行运