采集小红书笔记详情页的方法,大部分人都想得复杂了

news2025/1/13 13:47:12

一般来说,社交媒体都有列表页和详情页、个人主页三大页面,列表页一般包含搜索结果页、话题聚合页等等,详情页就是点开某一条笔记或者动态的具体页面;

小红书当然也不例外,比如下面这个话题聚合页:

https://www.xiaohongshu.com/page/topics/5bfd5dcb0af6350001652788?fullscreen=true&naviHidden=yes&xhsshare=CopyLink

就是列表页,列表页通常只有笔记的部分数据,这是因为列表页要显示很多笔记,每个笔记就只能显示梗概信息,比如封面图、标题、点赞数,而更具体的内图、内容、转发评论收藏数,则只能去详情页获取,详情页链接一般带有笔记的 id:

https://www.xiaohongshu.com/explore/6596bb80000000001802b5d7

在这里插入图片描述

所以,使用 {} 爬虫获取到列表信息后,如果需要更详细的笔记数据则去详情页获取。

As we all known,小红书的反爬做的还算比较到位,很多接口需要验证签名比较麻烦;So,对于有经验的小红书爬虫选手来说,他会直奔签名去。

说巧不巧,我有两个朋友,就是这样干的,然后他问我有没有简单的办法。

其实呢,这个接口,直接使用 requests.get 就能获取数据,快刀斩乱麻。

import requests
headers = {
    'authority': 'www.xiaohongshu.com',
    'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7',
    'accept-language': 'zh-CN,zh;q=0.9,en-CN;q=0.8,en;q=0.7,es-MX;q=0.6,es;q=0.5',
    'cache-control': 'max-age=0',
    'sec-ch-ua': '"Not_A Brand";v="8", "Chromium";v="120", "Google Chrome";v="120"',
    'sec-ch-ua-mobile': '?0',
    'sec-ch-ua-platform': '"Windows"',
    'sec-fetch-dest': 'document',
    'sec-fetch-mode': 'navigate',
    'sec-fetch-site': 'same-origin',
    'sec-fetch-user': '?1',
    'upgrade-insecure-requests': '1',
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
}

response = requests.get('https://www.xiaohongshu.com/explore/6596bb80000000001802b5d7', headers=headers)

print(response.text)

打印响应如下:

在这里插入图片描述

打印可以直接出来页面数据,再加上上图第一行,我大致确定详情页应该是采用是服务端渲染(Server Side Rendering,简称 SSR),

即在服务端就把网页内容渲染好了,浏览器直接获取渲染好的 HTML,这有利于缩短首屏加载时间和搜索引擎优化 SEO,

而浏览器渲染 (Client Side Rendering,简称 CSR),浏览器需要先加载后端返回的 HTML 和 JavaScript,然后渲染网页,耗时肯定比 SSR 长,

而且由于搜索引擎爬虫可以直接读取服务器端生成的 HTML,因此 SSR 对 SEO 较为友好,有利于搜索引擎收录,

又因为小红书网页版是采用 Vue 这种数据驱动视图的前端框架开发,就更有必要采用 SSR 来做 SEO 了,

这就是为什么经常能在浏览器中搜索到小红书社区的笔记的原因,学以致用了有木有。

SSR 对搜索引擎爬虫友好,当然也就对一般的爬虫友好,这就是为什么 requests.get 能直接请求到数据的原因。

解析数据直接使用 xpath 就好:

from lxml import etree
html = etree.HTML(response.text)
title = html.xpath('//meta[@name="og:title"]/@content')[0].strip()
content = html.xpath('//meta[@name="description"]/@content')[0].strip()
image_url_list = html.xpath('//meta[@name="og:image"]/@content')
print(title, content, image_url_list)

comment_cnt = html.xpath('//meta[@name="og:xhs:note_comment"]/@content')[0].strip()
like_cnt = html.xpath('//meta[@name="og:xhs:note_comment"]/@content')[0].strip()
collect_cnt = html.xpath('//meta[@name="og:xhs:note_collect"]/@content')[0].strip()
print(comment_cnt, like_cnt, collect_cnt)

其打印如下:

华为nova 12系列 | 新品开售 华为nova 12 Pro、华为nova 12,今日10:08 正式开售! 	 12号色、樱语白、曜金黑,瞩目配色,浪漫💗在握; 前置首发三种人像美颜主题,让你自拍真实又好看; 更有鸿蒙智慧通信和HarmonyOS 4加持,流畅体验更出色。 	 #华为nova12   #出色蓝不住  #华为 ['http://sns-webpic-qc.xhscdn.com/202401102035/a2125d5cc798c7d63295c12f32feedfe/spectrum/1040g0k030tgsc5ci4s0049uqgf8gnvr3gn4dbro!nd_dft_wlteh_jpg_3', 'http://sns-webpic-qc.xhscdn.com/202401102035/5de18f6f298ab03bd6c7c927dcc6d11a/spectrum/1040g0k030tgsc5e6kq0049uqgf8gnvr377tqujo!nd_dft_wlteh_jpg_3']
10+ 10+ 10+

为什么数据是 10+ 呢,因为请求的 headers 没带登录凭证信息 cookie,带上 cookie 请求就能获取到具体数字。

这个故事告诉我们:

他强由他强,清风拂山冈。他横任他横,明月照大江。他自狠来他自恶,我自一口真气足。

在这里插入图片描述

这个故事还告诉我们:

实践,是检验真理的唯一标准。

不妨多多点赞,读者们的支持是本号更新的最大动力。

山冈。他横任他横,明月照大江。他自狠来他自恶,我自一口真气足。

这个故事还告诉我们:

实践,是检验真理的唯一标准。

不妨多多点赞,读者们的支持是本号更新的最大动力。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

csv文件查找工具(一)

自己写的小工具,查询csv文件前三列的数据互查, 主要目的是 组sql 需要这三个数据互查, 当然从数据库查的更快, 但数据库的连接需要验证权限,能自己搞,先自己搞 速度待优化,没时间搞了&#xff0…

【办公技巧】Word功能区灰色显示不能编辑,怎么破?

Word文档可以设置加密来保护文件禁止修改,但是在word文档中设置限制编辑功能时对它的作用是否有详细的了解呢?今天为大家介绍word限制编辑功能的作用以及忘记了限制编辑密码该如何解决。 设置限制大家应该都清楚,就是点击工具栏中的审阅 – …

微信小程序开发学习笔记《7》全局配置以及小程序窗口

微信小程序开发学习笔记《7》全局配置以及小程序窗口 博主正在学习微信小程序开发,希望记录自己学习过程同时与广大网友共同学习讨论。全局配置官方文档 一、全局配置文件及常用的配置项 小程序根目录下的app.json 文件是小程序的全局配置文件。 常用的配置项如…

Java基础项目---飞机大战的简易实现

推荐阅读 智能化校园:深入探讨云端管理系统设计与实现(一) 智能化校园:深入探讨云端管理系统设计与实现(二) 文章目录 推荐阅读前言一、系统分析问题描述总体设计功能流程图 二、程序和算法的介绍FlyingOb…

DDNS-GO配置使用教程

环境:openwrt 下载地址:Releases jeessy2/ddns-go GitHub 下载 ssh至openwrt根目录,根据你的处理器选择要下载的版本,我是路由器,选择的是 ddns-go_5.7.1_linux_arm64.tar.gz wget github链接 安装 tar -zxvf…

Java面试题之JVM

Java面试题之JVM 1. JVM的组成部分及其作用?2. JVM的堆和栈的区别?3. 简述一下垃圾回收机制?(垃圾回收的原理?)4. 垃圾回收器都有什么?该怎么选择?5. 如何判断垃圾可以回收了?6. 垃圾回收算法有…

Redis原理篇(Dict的收缩扩容机制和渐进式rehash)

Dict(即字典) Redis是一种键值型数据库,其中键与值的映射关系就是Dict实现的。 Dict通过三部分组成:哈希表(DictHashTable),哈希节点(DictEntry),字典(Dict&#xff09…

pgzrun 生命游戏制作过程详解

背景资料 康威生命游戏(Game of Life)是剑桥大学约翰何顿康威设计的计算机程序。 美国趣味数学大师马丁加德纳(Martin Gardner,1914-2010)通过《科学美国人》杂志,将康威的生命游戏介绍给学术界之外的广大渎者,一…

互联网大厂职场各职级P6/P7和核心能力

目录 具体能力要求总结 具体能力要求 专业工匠 p5 被别人带领p6 独立完成项目全流程,指导 2-3 人 乐队指挥 p7 带行政团队 7-10 ,项目团队,专项团队,复杂系统设计 1-3 个一般系统构成p8 领域专家 垂直 3 个团队 ,横…

蓝桥杯基础知识3 memset()

蓝桥杯基础知识3 memset() #include <bits/stdc.h> using namespace std;int main(){int a[5]; //随机数for(int i 0;i < 5; i)cout << a[i] << \n;cout << \n;memset(a, 0, sizeof a); //0for(int i 0;i < 5; i)cout << a[i] << …

Proteus仿真stm32f103r6输出PWM/正弦波

资料下载地址&#xff1a;Proteus仿真stm32f103r6输出PWM/正弦波 一、仿真图 Proteus仿真stm32f103r6输出PWM/正弦波 二、程序 #include "pbdata.h"u16 fre; void RCC_Configuration(void); void GPIO_Configuration(void); void TIM3_Configuration();void Dela…

Kotlin程序设计(三)高级用法

Kotlin程序设计高级篇 在学习了前面的内容之后&#xff0c;相信各位小伙伴应该对Kotlin这门语言有了一些全新的认识&#xff0c;我们已经了解了大部分的基本内容&#xff0c;从本章开始&#xff0c;就是对我们之前所学的基本内容的进一步提升。 泛型 在前面我们学习了最重要…

【信息论与编码】【北京航空航天大学】实验二、哈夫曼编码【C语言实现】(下)图像编码压缩

实验2 哈夫曼编码&#xff08;下&#xff09;&#xff08;图像编码&#xff09; 实验简介&#xff1a; 本次实验为实验1&#xff1a;哈夫曼编码的后续补充&#xff0c;实验1见博客&#xff1a;实验一、哈夫曼编码【C语言实现】&#xff08;上&#xff09; 说明&#xff1a; 实…

Redis系列-15.Redis的IO多路复用原理解析

&#x1f44f;作者简介&#xff1a;大家好&#xff0c;我是爱吃芝士的土豆倪&#xff0c;24届校招生Java选手&#xff0c;很高兴认识大家&#x1f4d5;系列专栏&#xff1a;Spring源码、JUC源码、Kafka原理、分布式技术原理、数据库技术&#x1f525;如果感觉博主的文章还不错的…

【REST2SQL】05 GO 操作 达梦 数据库

【REST2SQL】01RDB关系型数据库REST初设计 【REST2SQL】02 GO连接Oracle数据库 【REST2SQL】03 GO读取JSON文件 【REST2SQL】04 REST2SQL第一版Oracle版实现 信创要求用国产数据库&#xff0c;刚好有项目用的达梦&#xff0c;研究一下go如何操作达梦数据库 1 准备工作 1.1 安…

查询速度提升15倍!银联商务基于 Apache Doris 的数据平台升级实践

本文导读&#xff1a; 在长期服务广大规模商户的过程中&#xff0c;银联商务已沉淀了庞大、真实、优质的数据资产数据&#xff0c;这些数据不仅是银联商务开启新增长曲线的基础&#xff0c;更是进一步服务好商户的关键支撑。为更好提供数据服务&#xff0c;银联商务实现了从 H…

关于高通Android 平台上qssi的介绍

1. QSSI 是 Qualcomm Single System Image 的缩写。 2. Android Q上开始支持QSSI。 3. QSSI 是用来编译system.img的 3.1 QSSI编译注意事项 lunch qssi ------ 编译system.img lunch target ------ 编译其余的image 3.2 有QSSI和没有QSSI的编译流程对比 没有QS…

3Dmax不能渲染怎么办?

使用3Dmax渲染异常的话&#xff0c;主要在于以下几点&#xff1a; 1.素材丢失导致渲染效果错误 max文件贴图丢失或对应路径不存在 2.相机位置 先要考虑是相机位置&#xff0c;不管用的普通相机还是物理相机。 看它的位置是不是放在了模型的里面或者是墙体的外面&#xff0c;…

如何构建Prompt,帮我生成QA,作为召回率检索的测试集?

最近在做搜索召回率的提升工作。粮草未动兵马先行&#xff01;在做之前应该先有一把尺子来衡量召回率的好坏。所以应该先构建测试数据集&#xff0c;然后去做标准化测试。 有了测试机集以后。再去做搜索优化&#xff0c;才能看出来效果。 当然可以选择一些开源的测试集。如果可…

“三指针法“合并两个有序数组(力扣每日一练)

我的第一想法确实是&#xff1a;先合并数组&#xff0c;再排序&#xff0c;搞完。 哈哈哈&#xff0c;想那么多干嘛&#xff0c;目的达成了就好了。 力扣官方题解是双指针&#xff1a; 还有糕手&#xff1a; Python&#xff1a; def merge(nums1, m, nums2, n):# 两个指针分别…