用DrissionPage过某里滑块分析

最近我又在找工作了,悲哀啊~,面试官给了一道题,要求如下:

爬虫机试:https://detail.1688.com/offer/643272204627.html 过该链接的滑动验证码,拿到正确的商品信息页html,提取出商品维度的信息,输出json

由于时间紧迫,想着去破解加密参数x5sec估计时间也不够,最后采用自动化工具先应付一下面试,毕竟能不能入职还是未知数。

言归正传,先看效果图如下:
在这里插入图片描述
众所周知阿里的滑块检测是比较多的,常规的自动化工具无法过滑块。所有这次尝试用DrissionPage去破解。

DrissionPage文档地址如下:

https://www.drissionpage.cn/

每次运行代码后都会启动一个全新的浏览器,防止浏览器缓存被检测

from DrissionPage import ChromiumPage, ChromiumOptionsco = ChromiumOptions()
co.auto_port()
page = ChromiumPage(co)

通过监听数据包的方式获取数据

self.page.listen.start('https://detail.1688.com/all')

自定义滑块轨迹,这点还是比较重要的,模拟的越像人工轨迹越不会被检测。

def slide(self):"""滑动代码:return:"""ele = self.page.wait.eles_loaded("x://span[contains(@id,'nc_1_n1z')]", timeout=20)if ele:ele = self.page.ele("#nc_1_n1t")time.sleep(3)ele.hover()self.page.actions.hold('#nc_1_n1z')self.page.actions.move(100, duration=random.random())self.page.actions.move(100, duration=random.random())self.page.actions.move(59, duration=3)

报错捕获,目前发现当抓取的数据超过一定量后,必然会触发封控机制,这时候就需要换IP处理。

 if self.page.wait.eles_loaded("#recyclerview"):print('过滑动成功')elif self.page.wait.eles_loaded("#nc_1_refresh1"):print('滑动失败')# 需要继续处理.......elif self.page.wait.eles_loaded("#login-form"):print('需要登陆/换IP')# 需要继续处理.......

完整代码如下:

from DrissionPage import ChromiumPage, ChromiumOptions
import json
import time
import re
import random
import datetimeclass Detail(object):def __init__(self):co = ChromiumOptions()co.auto_port()self.page = ChromiumPage(co)self.page.listen.start('https://detail.1688.com/offer/643272204627.html')def slide(self):"""滑动代码:return:"""ele = self.page.wait.eles_loaded("x://span[contains(@id,'nc_1_n1z')]", timeout=20)if ele:ele = self.page.ele("#nc_1_n1t")time.sleep(3)ele.hover()self.page.actions.hold('#nc_1_n1z')self.page.actions.move(100, duration=random.random())self.page.actions.move(100, duration=random.random())self.page.actions.move(59, duration=3)def request_body(self):url = 'https://detail.1688.com/offer/643272204627.html'self.page.get(url)res = self.page.listen.wait()pattern = r'window\.__INIT_DATA\s*=\s*(\{.*?\})\s*</script>'match = re.search(pattern, res.response.body)try:json_data = match.group(1)dict_data = json.loads(json_data)temp_model = dict_data.get('globalData').get('tempModel')print(datetime.datetime.now())print(temp_model)except Exception as e:print(e)self.slide()if self.page.wait.eles_loaded("#recyclerview"):print('过滑动成功')elif self.page.wait.eles_loaded("#nc_1_refresh1"):print('滑动失败')# 需要继续处理.......elif self.page.wait.eles_loaded("#login-form"):print('需要登陆/换IP')# 需要继续处理.......def run(self):for i in range(1, 100000):self.request_body()if __name__ == '__main__':detail = Detail()detail.run()

最后总结一下,代码是半成品,想要实现完美的抓取阿里1688数据

  • 第一需要完成IP代理模块;
  • 第二完善报错机制;
  • 第三优化滑块轨迹逻辑。

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

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

相关文章

Notepad++换安装路径之后,右键打开方式报错:Windows无法访问指定设备、路径或文件。你可能没有适当的权限访问该项目。的处理方法

把Notepad添加到右键打开方式&#xff0c;可以参考下面的3篇文章添加&#xff1a; https://blog.csdn.net/xiaoerbuyu1233/article/details/88287747 https://blog.csdn.net/qq_44000337/article/details/120277317 https://www.cnblogs.com/zhrngM/p/12899026.html 这里主要是…

docker安装mysql突然无法远程连接

docker安装mysql突然莫名其妙的无法远程连接 docker安装mysql突然无法远程访问问题背景发现问题排查问题解决问题总结 docker安装mysql突然无法远程访问 问题背景 大概一年前在服务器中通过docker安装mysql5.7端口映射关系是3308->3306 前期在服务器上开方了3308端口 fir…

redis操作set时的性能分析y以及一系列问题

redis操作set时的性能分析y以及一系列问题 第一次测试 初始状态 第一次测试 第二次 初始状态 第二次测试 测试代码 Javapackage cn.only.hww; import redis.clients.jedis.Jedis; import java.util.*;/** * author…

液氮罐搬运过程中的安全注意事项有哪些

在液氮罐搬运过程中&#xff0c;安全性是至关重要的考虑因素。液氮是一种极低温的液体&#xff0c;其温度可达零下196摄氏度&#xff0c;在接触到人体或物体时会迅速引发严重的冷冻伤害。因此&#xff0c;正确的搬运和使用液氮罐是保障操作安全的关键。 液氮是一种无色、无味的…

每日一题,力扣leetcode Hot100之128. 最长连续序列

题目理解&#xff1a; 从示例1可以看出简单的连续数字就算&#xff0c;从示例2可以看出当有重复数字时&#xff0c;是不算长度的 解法一&#xff1a; 第一个想到的解法&#xff0c;就是对nums排序&#xff0c;然后双层循环遍历进行判断&#xff0c;当前一个和后一个相减等于…

【鸿蒙学习笔记】位置设置・direction・容器内主轴方向上元素的布局

官方文档&#xff1a;位置设置 目录标题 direction・容器内主轴方向上元素的布局Row direction direction・容器内主轴方向上元素的布局 Row direction Row() {Text(1).height(50).width(25%).fontSize(16).backgroundColor(0xF5DEB3).textAlign(TextAlign.Center)Text(2)…

NVidia 的 gpu 开源 Linux Kernel Module Driver 编译 安装 使用

见面礼&#xff0c;动态查看gpu使用情况&#xff0c;每隔2秒钟自动执行一次 nvidia-smi $ watch -n 2 nvidia-smi 1&#xff0c;找一台nv kmd列表中支持的 GPU 的电脑&#xff0c;安装ubuntu22.04 列表见 github of the kmd source code。 因为 cuda sdk 12.3支持最高到 ubu…

[MySQL][索引][下][理解索引]详细讲解

目录 0.前期准备1.为何IO交互要是Page&#xff1f;2.理解单个Page3.理解多个Page4.页目录5.单页情况6.多页情况7.总结复盘8.InnoDB 在建立索引结构来管理数据的时候&#xff0c;其他数据结构为何不行&#xff1f;9.聚簇索引 vs 非聚簇索引 0.前期准备 建立测试表 create table …

网站开发:使用VScode安装yarn包和运行前端项目

一、首先打开PowerShell-管理员身份运行ISE 输入命令&#xff1a; set-ExecutionPolicy RemoteSigned 选择“全是”&#xff0c;表示允许在本地计算机上运行由本地用户创建的脚本&#xff0c;没有报错就行了 二、接着打开VScode集成终端 输入 npm install -g yarn 再次输入以…

2-38 基于matlab的蚁群算法优化无人机uav巡检

基于matlab的蚁群算法优化无人机uav巡检&#xff0c;巡检位置坐标可根据需求设置&#xff0c;从基地出发&#xff0c;返回基地&#xff0c;使得路径最小。可设置蚁群数量&#xff0c;信息素系数。输出最佳路线长度。程序已调通&#xff0c;可直接运行。 2-38 蚁群算法优化无人…

人工智能算法工程师(高级)课程1-单类目标识别之人脸检测识别技术MTCNN模型介绍与代码详解

大家好&#xff0c;我是微学AI&#xff0c;今天给大家介绍一下人工智能算法工程师(高级)课程1-单类目标识别之人脸检测识别技术MTCNN模型介绍与代码详解。本文深入探讨了基于PyTorch的人脸检测与识别技术&#xff0c;详细介绍了MTCNN模型、Siamese network以及center loss、sof…

Linux/Windows 系统分区

1. Windows 系统 1.1 系统分区 系统分区也叫做磁盘分区&#xff0c;即分盘&#xff1b; 举个例子&#xff0c;好比家里有一个大柜子&#xff0c;把衣服&#xff0c;鞋子&#xff0c;袜子都放在里面&#xff0c;由于没有隔断&#xff0c;找的时候非常麻烦&#xff0c;找是能找…

ETL数据集成丨通过ETLCloud工具,将Oracle数据实时同步至Doris中

ETLCloud是一个全面的数据集成平台&#xff0c;专注于解决大数据量和高合规要求环境下的数据集成需求。采用先进的技术架构&#xff0c;如微服务和全Web可视化的集成设计&#xff0c;为用户提供了一站式的数据处理解决方案。 主要特点和功能包括&#xff1a; 实时数据处理&…

PyTorch 深度学习实践-卷积神经网络基础篇

视频指路 参考博客笔记 参考笔记二 文章目录 上课笔记代码实现作业实现 上课笔记 如果一个网络全都是由线性层串联起来&#xff08;torch.nn.Linear(xx, yy)&#xff09;&#xff0c;就叫他全连接的网络(左边节点到右边节点任意两个都存在权重) 先看一下吴恩达或者李宏毅老师…

SpringCloudAlibaba-Seata2.0.0与Nacos2.2.1

一、下载 ## 下载seata wget https://github.com/apache/incubator-seata/releases/download/v2.0.0/seata-server-2.0.0.tar.gz## 解压 tar zxvf seata-server-2.0.0.tar.gz二、执行sql文件 ## 取出sql文件执行 cd /seata/script/server/db/mysql ## 找个mysql数据库执行三、…

【随想】代码优化论

序言:时间是我们最宝贵的财富,珍惜手上的每个时分 目录 1.非必要&#xff0c;不修改、不优化 2.需修改、需优化、搞彻底 随着工作年限的增长&#xff0c;接触到的二手代码也越来越多&#xff0c;无论是同事离职留下的垃圾代码&#xff0c;还是接手烂摊子项目代码&#xff0c;…

Java并发04之线程同步机制

文章目录 1 线程安全1.1 线程安全的变量1.2 Spring Bean1.3 如果保证线程安全 2 synchronized关键字2.1 Java对象头2.1.1 对象组成部分2.1.2 锁类型2.1.3 锁对象 2.2 synchronized底层实现2.2.1 无锁状态2.2.2 偏向锁状态2.2.3 轻量级锁状态2.2.4 重量级锁2.2.5 锁类型总结2.2.…

云手机结合自主ADB命令接口 提升海外营销效率

现在&#xff0c;跨境电商直播已经成为在线零售的重要渠道&#xff0c;在大环境下&#xff0c;确保直播应用的稳定性和用户体验至关重要。 云手机支持自主ADB命令接口&#xff0c;为电商直播营销提供了技术支持&#xff0c;使得应用开发、测试、优化和运维更加高效。 什么是A…

postman双击打不开的解决方案

postman双击打不开的解决方案 深入再深入 于 2022-05-09 15:45:56 发布 阅读量3.1k 收藏 2 点赞数 4 文章标签&#xff1a; postman 版权 右键属性 安装路径 更新版本 回滚 问题排查 关键词由CSDN通过智能技术生成 解决方案&#xff1a; 右键-属性&#xff0c;复制安装路…

puzzle(0611)《组合+图论》追捕问题

目录 一&#xff0c;追及问题 1&#xff0c;警察和小偷 2&#xff0c;旋转的4个硬币 3&#xff0c;抓狐狸 二&#xff0c;围堵问题 三&#xff0c;追及围堵 一&#xff0c;追及问题 1&#xff0c;警察和小偷 如下图&#xff0c;警察先走&#xff0c;警察和小偷轮流一人…