【爬虫实战】抓取某站评论

ops/2024/11/19 10:21:28/

爬虫实战】抓取某站评论

声明:本文中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!

方式一:JS逆向+request发送请求

效率更高,但逆向难度较大,此处不做讲解。

DrissionPage_5">方式二:自动化模块(DrissionPage)发送请求

官方地址:https://www.drissionpage.cn/

安装

pip install DrissionPage

基础使用

创建页面驱动:ChromiumPage()
# 导入
from DrissionPage import ChromiumPage# 创建对象
page = ChromiumPage()
请求网址:page.get(xxx)
# 创建对象
page = ChromiumPage()
# 访问网页
page.get('https://www.baidu.com')
监听后端接口:page.listen.start(xxx)
# 创建对象
page = ChromiumPage()
# 访问网页
page.get('https://www.baidu.com')
# 监听指定接口
page.listen.start("mcp/pc/pcsearch")
获取元素输入文本:page(‘#kw’).input(‘xxx’)
# 创建对象
page = ChromiumPage()
# 访问网页
page.get('https://www.baidu.com')# 输入文本
page('#kw').input('DrissionPage')
点击按钮:page(‘#su’).click()
# 创建对象
page = ChromiumPage()
# 访问网页
page.get('https://www.baidu.com')# 输入文本
page('#kw').input('DrissionPage')
# 点击按钮
page('#su').click()
获取页面元素:page.eles(‘tag:h3’)
page.eles('tag:h3')
等待页面返回数据:page.listen.wait()
rsp = page.listen.wait()
print(rsp.response.body['data'])
案例一:抓取页面元素
# 导入
from DrissionPage import ChromiumPage# 创建对象
page = ChromiumPage()
# 访问网页
page.get('https://www.baidu.com')
# 输入文本
page('#kw').input('DrissionPage')
# 点击按钮
page('#su').click()
# 等待页面跳转
page.wait.load_start()
# 获取所有结果
links = page.eles('tag:h3')
# 遍历并打印结果
for link in links:print(link.text)
案例二:抓取接口数据
  1. 创建对象
  2. 监听后端接口
  3. 访问网页触发接口请求
# 导入
from DrissionPage import ChromiumPage# 创建对象
page = ChromiumPage()
page.listen.start("mcp/pc/pcsearch")
# 访问网页
page.get('https://www.baidu.com')
# 输入文本
page('#kw').input('DrissionPage')
# 点击按钮
page('#su').click()
rsp = page.listen.wait()
print(rsp.response.body['data'])

分析

①获取视频URL

我们先使用浏览器登录某站,然后随机点开一个视频,复制视频的URL地址
在这里插入图片描述

②定位评论接口

F12打开开发者工具,查看视频下方评论,搜索其中一个评论,然后刷新页面。

  • 打开左侧搜索框
    在这里插入图片描述
  • 根据评论关键字定位接口
    在这里插入图片描述
③解析接口返回

定位到接口以后查看Preview、Response,查看具体评论是在哪个结构体里
在这里插入图片描述

在这里插入图片描述

代码编写

注意:为了演示效果,这里只给出部分代码,关于评论翻页、以及评论下方的回复,大家可以自行研究。

# 导入
from DrissionPage import ChromiumPage# 创建对象
page = ChromiumPage()
page.listen.start("/x/v2/reply/wbi/main")
# 视频地址
page.get('https://www.bilibili.com/video/BV1rhDdYoEtf/?spm_id_from=333.1007.tianma.1-1-1.click&vd_source=abb9b9c7b77084f9624561bf945aee4a')
rsp = page.listen.wait()
# print(rsp.response.body['data'])
for index in range (len(rsp.response.body['data']['replies'])):comment = rsp.response.body['data']['replies'][index]text = comment['content']['message']uname = comment['member']['uname']print(uname + ':' + text)

效果:
在这里插入图片描述


http://www.ppmy.cn/ops/134935.html

相关文章

【漏洞复现】某全新H5购物商城系统存在前台任意文件上传漏洞(RCE)

漏洞描述 该源码采用HTML5技术开发,可以完美适配各种移动设备,以及iOS和Android系统。同时,易支付接口更为商家提供了便捷的交易功能,让顾客可以轻松通过手机进行网络支付,享受到更加便捷的购物体验。该源码界面设计十分简洁、清爽,同时还保证了购物流程的顺畅和简便。无…

DP动态规划基础题(Kadane算法)

动态规划(Dynamic Programming,简称DP)是一种在数学、管理科学、计算机科学、经济学和生物信息学等领域中使用的,通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。动态规划算法通常用于优化问题,特别是那…

百度世界大会2024,展现科技改变生活的力量

百度世界2024大会以“应用来了”为主题,于2024年11月12日在上海世博中心隆重举行。大会吸引了众多科技爱好者、行业专家和媒体人士参与,共同见证AI技术的最新进展和未来趋势。 会上,李彦宏首先宣布了检索增强的文生图技术——文心iRAG的正式亮…

Nginx参数配置-笔记

文章目录 upstream实现后台应用服务负载均衡&高可用proxy_set_header参数 upstream实现后台应用服务负载均衡&高可用 角色IPnginx172.168.110.2后端应用服务1172.168.110.3后端应用服务2172.168.110.4后端应用服务3(备用)172.168.110.5 示例如下: upstre…

spi 回环

///tx 极性0 (sclk信号线空闲时为低电平) /// 相位0 (在sclk信号线第一个跳变沿进行采样) timescale 1ns / 1ps//两个从机 8d01 8d02 module top(input clk ,input rst_n,input [7:0] addr ,input …

ASUS/华硕灵耀X双屏Pro UX8402Z 原厂Win11-22H2系统 工厂文件 带ASUS Recovery恢复

华硕工厂文件恢复系统 ,安装结束后带隐藏分区,一键恢复,以及机器所有驱动软件。 系统版本:windows11 原厂系统下载网址:http://www.bioxt.cn 需准备一个20G以上u盘进行恢复 请注意:仅支持以上型号专用…

node.js知识点总结

1、Node.js Node. js是一个基于 Chrome v8引擎的服务器端 JavaScript运行环境;Node. js是一个事件驱动、非阻塞式I/O的模型,轻量而又高效;Node. js的包管理器npm是全球最大的开源库生态系统。 2、数据处理中的buffer: 具体…

Postman之数据提取

Postman之数据提取 1. 提取请求头\request中的数据2. 提取响应消息\response中的数据3. 通过正在表达式提取4. 提取cookies数据 本文主要讲解利用pm对象对数据进行提取操作,虽然postman工具的页面上也提供了一部分的例子,但是实际使用时不是很全面&#…