

发布于 2025-12-22 09:15更新于 2026-01-06 16:15919浏览羽易出品,必属精品。实际上我是跨境电商从业者,专注于跨境电商解决方案。
首先,感谢影刀工程师-驿站,他提供的影刀模块创新使用了DOM+JS的方式实现页面下滑。快速且可以持续爬取
为什么已经有了驿站大佬的懒加载还要再造一个出来呢,主要的原因是,最近有一个客户的需求是爬取 Target数据,在解决完风控后,发现这个网站,不论有没有魔法上网,都是很慢,以至于爬取数据的时间很耽误。既然如此,只能大力出奇迹,我并发10个浏览器,完美解决。
话不多说,直接上代码,首先需要安装:Drissionpage,为什么呢、,因为影刀不支持并发,所以只能曲线救国。
安装地址如下:
懒加载函数:
def 获取懒加载元素( 页面, 元素路径,元素超时时间=10,每次最大获取数=-1,):
"""
:param 页面:
:param 元素路径: xpath(x://)
:param 元素超时时间: 最大运行时间(秒)
:param 每次最大获取数: 单次最多 元素数据量
"""
已出现元素 = set()
无新元素计数 = 0
while True:
try:
当前元素 = 页面.eles(元素路径,timeout=20.0)
except Exception:
当前元素 = []
新元素 = []
for ele in 当前元素:
try:
唯一值 = ele.html
except Exception:
continue
if 唯一值 in 已出现元素:
continue
已出现元素.add(唯一值)
新元素.append(ele)
if 每次最大获取数 != -1 and len(新元素) >= 每次最大获取数:
break
if 新元素:
无新元素计数 = 0
for ele in 新元素:
try:
# 滚动元素可见
ele.scroll.to_see()
except Exception:
pass
yield ele
time.sleep(0.5)
continue
# 一次找不到约2秒,所以用 元素超时时间/2 控制等待时间
连续无新元素次数 = float(元素超时时间)//2
# 没有新元素
无新元素计数 += 1
if 无新元素计数 >= 连续无新元素次数:
break
# 关键:真实向下滚动
页面.run_js("window.scrollBy(0, 800)")
time.sleep(0.8)
# # 模拟人动行为-如果有风控可以开启-如果有风控可以开启-如果有风控可以开启-如果有风控可以开启
# # 1️⃣ 正常向下刷(60%)
# # 2️⃣ 慢慢刷(15%)
# # 3️⃣ 回滚一下(10%)是不是感觉代码很简单,没错,就是这么简单。直接调用即可。
完整的代码文件,包括使用示例,以及防风控代码,都在这里边。我放在在这个了,有需要的去下载即可:
链接:https://pan.quark.cn/s/0318337dc57d