hoothin / UserScripts

Greasemonkey scripts ( Pagetual / Picviewer CE+ / DownloadAllContent ) 油猴腳本集 ユーザースクリプト集
https://greasyfork.org/users/8227-hoothin
3.06k stars 510 forks source link

关于 元素抓取器 #421

Closed fir05 closed 1 year ago

fir05 commented 1 year ago

反馈两个问题。

1,为何元素抓取器默认抓取的是pageElement呢?重要的是nextLink,没有nextLink根本预读不了,没有pageElement顶多显示body。希望优先抓取nextLink,测试能正常读取了,再去追求pageElement的显示。 2,我是不会css的,元素抓取器获取的元素几乎没有能直接用的。而我用stylebot扩展抓取的元素直接就能用,不需要试错或者修改。stylebot甚至比uBlock Origin的元素抓取还要好,有的网站屏蔽广告,用uBlock Origin就抓取错误,stylebot则正常找到。

hoothin commented 1 year ago
  1. nextLink 一般不需要修改,如果不能找到 nextLink,那大概率需要手动写 selector,此时元素抓取器没有啥用。所以不要太过依赖元素抓取器。
  2. 元素抓取器抓到的是精确选择器,而 stylebot 生成的是无视元素结构的泛选择器,不适用于翻页。如果页内有同 class 同 id 的两套不同位置的元素,那么泛选择器必然会产生混淆

你所说的“stylebot扩展抓取的元素直接就能用”大概率是因为页内元素某一层级祖父元素的属性是随机生成的

fir05 commented 1 year ago

我说的是,元素抓取器作为写新规则的工具,不是修改已有规则的工具,应该优先 nextLink。

对,uBlock Origin经常抓取到随机生成的元素名,stylebot 的css确实也和翻页的元素不是一回事。

我刚给这个没有规则的网页写了规则 https://www.acfun.cn/search?type=complex&keyword=%E5%8D%9A%E5%BE%B7%E4%B9%8B%E9%97%A8%203 第一件事就是找到nextLink,看看能不能预读。能预读了就看看能不能优化pageElement显示效果。 我想说是,nextLink 真的是最重要的。

hoothin commented 1 year ago

因为nextLink是可以留空自动获取的,而大多数情况下用元素抓取器来获取 nextlink 都是不行的。例如有这样一个 nextlink,它处于一列元素中,没有特殊标记,兄弟节点个数未知,仅知道它的子文本内容是“下一套”。那元素抓取器怎么生成?类似这种情况都只能手动写选择器或者 xpath。

fir05 commented 1 year ago

好的,明白了,确实各种抓取器获取的元素鲜少能有效。谢谢。

hoothin commented 1 year ago

感谢反馈,acfun上其实是已经找到了下一页,但是因为acfun把后面的视频up主文章番剧列表全都预加载到页面中了,而永页机找到了视频里的下一页,然后否决了。 我更新了一版,最新版已经兼容这种情况了。