小红书关键词爬虫

news/发布时间2024/9/20 7:47:44

标题

  • 1 统计要收集的关键词,制作一个文件夹
  • 2 爬取每一页的内容
  • 3 爬取标题和内容
  • 4 如果内容可以被查看,爬取评论内容
  • 5 将结果进行汇总,并且每个帖子保存为一个json文件,具体内容
  • 6 总结

1 统计要收集的关键词,制作一个文件夹

例如,我要收集旅游相关的,就收集:
旅游、旅行、旅游攻略,这些词,做成一个txt文件。

用一个浏览器登录上小红书账号,然后记录写cookies,例如:
在这里插入图片描述

2 爬取每一页的内容

主要使用request,js模块,将爬取的内容保存为res,里面包含一页20条数据。

info = re.sub(r'"page":".*?"', f'"page":"{page}"', info)ret = js.call('get_xs', api, info, cookies["a1"])headers['x-s'], headers['x-t'] = ret['X-s'], str(ret['X-t'])response = requests.post(search_url, headers=headers, cookies=cookies, data=info.encode('utf-8'))res = response.json()

3 爬取标题和内容

从每一个note里面解析出标题,内容等信息。

result = {}result["title"] = data['note_card']['title']result["desc"] = data['note_card']['desc'].replace("\n", "").replace("\t", "")tags_temp = data['note_card']['tag_list']tags = []for tag in tags_temp:try:tags.append(tag['name'])except:passresult["tags"] = tagsresult["time"] = timestamp_to_str(data['note_card']['time'])

4 如果内容可以被查看,爬取评论内容

每个帖子里面的评论的单独的url,需要根据id号进行拼接,所以根据第3节获取的user-id,进行拼接,然后再用get进行访问,最后获得每条评论,注意有些帖子是不能被查看的,所以需要进行判断。

note_id = url.split('/')[-1]comments_url = "https://edith.xiaohongshu.com/api/sns/web/v2/comment/page?note_id={}&image_scenes=FD_WM_WEBP,CRD_WM_WEBP".format(note_id)response = requests.get(comments_url, headers=headers, cookies=cookies)res = response.json()comments = []for line in res["data"]["comments"]:comment_str = line["content"]comments.append(comment_str)

5 将结果进行汇总,并且每个帖子保存为一个json文件,具体内容

包含:标题,具体内容,标题,创建时间,评论内容。每个关键词一个文件夹。
在这里插入图片描述

6 总结

详细代码私聊,注意本内容没有爬取图片,如果需要可以添加。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.bcls.cn/WTwf/9161.shtml

如若内容造成侵权/违法违规/事实不符,请联系编程老四网进行投诉反馈email:xxxxxxxx@qq.com,一经查实,立即删除!

相关文章

Spring Boot 手写starter!!!

原因:为什么要手写starter??? 原因:简化功能。 实例:以分页为例:写一个starter。 1.首先定义一个PageX注解。 Target({ElementType.METHOD}) Retention(RetentionPolicy.RUNTIME) Documented p…

神经网络系列---权重初始化方法

文章目录 权重初始化方法Xavier初始化(Xavier initialization)Kaiming初始化,也称为He初始化LeCun 初始化正态分布与均匀分布Orthogonal InitializationSparse Initializationn_in和n_out代码实现 权重初始化方法 Xavier初始化(X…

单点故障解决方案之Smart Link与Monitor Link

-SmartLink技术,创建Smart Link 组。在该组中,加入两个端口。其中1个端口是主端口,也称之为Master端口。另外1个端口是备份端口:也称之为 Slave 端口。 -Monitor Link 组也称之为“监控链路组,由上行端口和下行端口共同组成。下行…

c# iis Oracle链接

一、下载 下载地址:https://www.oracle.com/database/technologies/instant-client/downloads.html 这是Oracle Instant Client的下载首页,有很多种版本可供下载。 但要注意第三方工具如:PL/SQL Developer和Toad的版本,32位的要…

GZ036 区块链技术应用赛项赛题第10套

2023年全国职业院校技能大赛 高职组 “区块链技术应用” 赛项赛卷(10卷) 任 务 书 参赛队编号: 背景描述 养老保险是对于老年人的最基本的生活保障。各种数据显示,当前的养老金市场规模庞大。2016年美国的养老金资…

书籍推荐|《使用 ESP32 开发物联网项目(第二版)》

随着物联网技术的迅猛发展,ESP32 因其强大的功能而备受物联网开发者的青睐。在此背景下,资深物联网专家 Vedat Ozan Oner 撰写的《使用 ESP32 开发物联网项目(第二版)》,为开发者提供了全面且深入的指南读物。 资深物…

Kafka的消费流程

Kafka的消费全流程 我们接着继续去理解最后这条消息是如何被消费者消费掉的。其中最核心的有以下内容。 1、多线程安全问题 2、群组协调 3、分区再均衡 多线程安全问题 当多个线程访问某个类时,这个类始终都能表现出正确的行为,那么就称这个类是线…

循环结构:for循环,while循环,do-while,死循环

文章目录 for循环for案例:累加for循环在开发中的常见应用场景 whilewhile循环案例: for和while的区别:do-while三种循环的区别小结死循环 快捷键 ctrlaltt for循环 看循环执行多少次,就看有效数字有几个 快捷键 fori 示例代码&am…

用idea debug时,怎么在某个map对象中再加个key value

实现方式 在用idea 进行 debug时,我们经常喜欢对某行代码打断点,然后对某个对象重新设置值,以快速地实现我们预期想覆盖的场景。通常的方式是用鼠标右键点击某个对象,然后选择Set value进行设置值,但是如果想在map中添…

ywtool network命令

一.network功能介绍 network功能就是通过脚本的方式配置IP信息,分为4项: (1) 配置单网卡(2)配置br网桥(单网卡)(3)配置bond(两张网卡)(4)配置ovs网桥(单网卡) 日志文件:/var/log/ywtools/ywtools-network.log/usr/local/ywtools/config/config.ini中network参数:…

斯坦福大学为机器人操作模仿学习设计了示教新范式

近期斯坦福大学提出了通用操纵界面(UMI)–一种数据收集和策略学习框架,可将人类演示的技能直接转移到可部署的机器人策略中。 https://umi-gripper.github.io/ UMI 采用手持式抓手和精心的界面设计,可为具有挑战性的双臂和动态操…

【Python_Zebra斑马打印机编程学习笔记(五)】基于zebra控制斑马打印机实现自动化打印标贴

基于zebra控制斑马打印机实现自动化打印标贴 基于zebra控制斑马打印机实现自动化打印标贴前言一、zebra库介绍二、获取打印机队列三、设置标签大小四、发送打印指令五、打印包含当前打印机配置的标签 基于zebra控制斑马打印机实现自动化打印标贴 前言 本文介绍基于 zebra 第三…

react使用@reduxjs/toolkit和react-redux实现store状态管理

一、概述 reduxjs/toolkit和react-redux是用于在React应用中管理全局状态的工具库 1、reduxjs/toolkit: reduxjs/toolkit是Redux官方推荐的工具库,是对 Redux 的二次封装,它提供了一些便捷的API和工具,帮助开发者更快速地编写R…

高防IP简介

高防IP可以防御的有包括但不限于以下类型: SYN Flood、UDP Flood、ICMP Flood、IGMP Flood、ACK Flood、Ping Sweep 等攻击。高防IP专注于解决云外业务遭受大流量DDoS攻击的防护服务。支持网站和非网站类业务的DDoS、CC防护,用户通过配置转发规则&#x…

面试官:说一下Filter过滤器的执行顺序

背景说明 各位小伙伴大家好,我是全栈小白 相信各位小伙伴都用过Filter过滤器吧,在学习servlet的时候,Filter可是我们认证的好帮手,但是在学习了SpringBoot框架之后,Filter可能被大家遗忘了,相对Spring框架…

用Java在Spring Boot项目中,如何传递来传递一个对象(多个参数??

前言: 在前面我们已经了解到,Spring Boot项目中,可以传递一个参数,或者多个参数,但是,随着参数的增加,咱们总不能每增加一个参数,就重新写一段代码吧??这样显…

Appium+Python+pytest自动化测试框架的实战

本文主要介绍了AppiumPythonpytest自动化测试框架的实战,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 先简单介绍一下目录,再贴一些代码,代码里有注释 Basic目录下写的是一些公…

【白话前端】数字孪生(桌面端)的常用技术栈和软件:极简版

声明:配图大部分为web端,你可以想象为桌面端,桌面端配图不好找,请谅解。 游戏行业和非公开的行业,桌面端应用的非常多,性能比web端有优越很多。数字孪生不是一个人可以搞定的,再牛逼的人也不行。…

你必须知道postman和Jmeter做接口测试区别

1. 用例组织方式 Jmeter的组织方式相对比较扁平,它首先没有WorkSpace的概念,直接是TestPlan,TestPlan下创建的Threads Group就相当于TestCase,并没有TestSuite的层级。 Postman功能上更简单,组织方式也更轻量级&…
推荐文章