大家一直在追求一个广义的更友好的render, 我更想直接在获取html之后做一个依据不同网站的render, 反正我只经常浏览那么几个网站,(或者建立一个社区库,大家一起优化) 我搜不到这么一个filter,(听说w3m有),但是我想用eww。
我找了半天找不到这么一个function 或者 advice的入口。 前提可以知道,我现在获得的url和content, 然后我直接删掉我不要的那些区域。再扔给render。
btw,我没搜到eww怎么登录这个网站。。
大家一直在追求一个广义的更友好的render, 我更想直接在获取html之后做一个依据不同网站的render, 反正我只经常浏览那么几个网站,(或者建立一个社区库,大家一起优化) 我搜不到这么一个filter,(听说w3m有),但是我想用eww。
我找了半天找不到这么一个function 或者 advice的入口。 前提可以知道,我现在获得的url和content, 然后我直接删掉我不要的那些区域。再扔给render。
btw,我没搜到eww怎么登录这个网站。。
在浏览器里写扩展插件好像也做不到这点,只能在render渲染后对网站内容进行修改,要在render之前改,也许可以对你要浏览的那么几个网站做代理,在你的代理程序里面针对具体网站改,然后访问你的代理地址就得到修改后的结果。 这和eww没关系了
eww 有个变量 eww-retrieve-command,可以用 curl 获取网页内容,应该可以顺便使用 sed 或 awk 处理一下
我搞定了,我在stacksexchange发了个贴,最后自己查eww源代码找到入口了。
(defun my-eww-preprocess-html (start end)
(save-excursion
(save-restriction
(narrow-to-region start end)
(goto-char start)
;; (print (buffer-substring start end))
(replace-regexp-in-region "<title>.*</title>"
"<title> hello world </title>"
(point-min) (point-max))
))
)
(advice-add 'eww--preprocess-html
:after 'my-eww-preprocess-html)
)
这个甚至在 libxml
进场解析前就开始html更改,先识别网站,然后可以依据网站内容去除掉大量不需要的东西,加快后续渲染速度。