关于elmGetter库的使用问题,同类的元素只能获取到一部分
请教各位大佬,我在使用elmGetter库的each方法的时候,代码当中对于css selector的路径经过了反复确认,同时也用xpath的方法验证过可以选中我要的元素。但是在代码运行过程中,只能获取到一部分元素,比如列表的长度有20个,我只能获取到6个左右。不知是什么原因,请指教。!(data/attachment/forum/202401/19/234823gi0pgv3wftfwv8wi.png)
我想要获取的元素如图所示,是每个a标签的href属性。
可用示例链接进行尝试。
[商家列表](https://shopsearch.taobao.com/search?q=%E6%B7%98%E5%AE%9D%E5%A5%B3%E4%BA%BA&js=1&initiative_id=staobaoz_20240118&ie=utf8&isb=0&shop_type=&ratesum=&loc=%E4%B8%8A%E6%B5%B7) 我的代码如下,好像并没有问题
```js
elmGetter.selector($);
elmGetter.each('ul#list-container li .list-info a.shop-name', company_name => {
console.log("company_name", company_name.innerText);
});
``` 王一之 发表于 2024-1-20 10:55
我的代码如下,好像并没有问题
```js
感谢大佬 我试了一下您的代码 可以获得完整数据。然后我又回头试了我的代码也是可以的 问题是出在这个页面是“懒加载”的 需要鼠标滚到最底下才能获得完整数据 xiaooooooo 发表于 2024-1-20 14:43
感谢大佬 我试了一下您的代码 可以获得完整数据。然后我又回头试了我的代码也是可以的 问题是出在这个页 ...
模拟下滚动? xiaooooooo 发表于 2024-1-20 14:43
感谢大佬 我试了一下您的代码 可以获得完整数据。然后我又回头试了我的代码也是可以的 问题是出在这个页 ...
这就不属于库的问题了,懒加载你可以尝试触发一下他的scroll事件。 王一之 发表于 2024-1-20 16:03
模拟下滚动?
// 获取页面高度
const pageHeight = document.documentElement.scrollHeight;
// 设置滚动距离
window.scrollTo(0, pageHeight);
噫 我把这段代码放进去没有效果 不知为啥{:4_89:} xiaooooooo 发表于 2024-1-21 23:03
// 获取页面高度
const pageHeight = document.documentElement.scrollHeight;
// 设置滚动距离
她是渐进式的加载
应该是通过观察API监听的
要逐步滚动到尾部的
也可以考虑找注入点
触发的时候属性改变了,直接打断点堆栈回溯找到了
剩下的就是慢慢跟了
```js
function c(b, c, f) {
var j, l, d, f = i.merge(f), c = a(f, c);
j = k.getDomEventObservablesHolder(b, 1);
if (!(d = j.handle)) {
d = j.handle = function(a) {
var b = a.type
, c = d.currentTarget;
if (!(k.triggeredEvent === b || typeof KISSY === "undefined"))
if (b = k.getDomEventObservable(c, b)) {
a.currentTarget = c;
a = new h(a);
return b.notify(a)
}
}
;
d.currentTarget = b
}
if (!(l = j.observables))
l = j.observables = {};
j = l;
if (!j) {
j = l = new k({
type: c,
currentTarget: b
});
j.setup()
}
j.on(f);
b = null
}
``` 李恒道 发表于 2024-1-22 13:36
她是渐进式的加载
应该是通过观察API监听的
要逐步滚动到尾部的
!(data/attachment/forum/202401/22/222625tykmc2y2rmgmp216.png)
如果是要使用跟踪堆栈的方法,我就干脆直接跳过这个scroll动作,直接通过接口拿到数据更快了。
[店铺列表接口](https://shopsearch.taobao.com/search?data-key=s&data-value=40&ajax=true&_ksTS=1705932538440_615&callback=jsonp616&ie=utf8&initiative_id=staobaoz_20240121&js=1&q=%E6%B7%98%E5%AE%9D%E5%A5%B3%E4%BA%BA&suggest=history_1&_input_charset=utf-8&wq=&suggest_query=&source=suggest&sort=sale-desc&isb=0&shop_type=&ratesum=&loc=%E4%B8%8A%E6%B5%B7&s=20)
但是话说回来,我如果有逆向接口参数的水平,也就不会采用油猴脚本这个曲线救国的方式来获取数据了😢
我还想到的一个方法是用我自己写的js脚本替换掉官方的js脚本,在我的js脚本中把这个变量导出然后输出到控制台(在上面的例子当中为e),但是这个方法通用性太差,很多网站都有校验js脚本完整性的机制,一旦发现js被篡改了就会另起一份。 xiaooooooo 发表于 2024-1-22 22:33
!(data/attachment/forum/202401/22/222625tykmc2y2rmgmp216.png)
如果是要使用跟踪堆栈 ...
油猴算是在有限范围内做动作
其实如果论逆向能力来说反而比CDP之类的更最求在最少资源下打最极限的操作
直接提接口也行~
页:
[1]