有没有办法可以复制选定的文本和链接?
“部分选定文本与此相关关联段落某处”
复制为:
“选定的一些文本与此{链接|http://example.com} 段落某处”
如果有类似的东西,那将会很有帮助。
答案1
一种解决方案可能是将页面上的每个链接转换为所需的格式。这可以使用 Firefox 中的 Greasemonkey 和自定义 UserScript 来完成。或者,Chrome 的 Tampermonkey 也可以正常工作,但我没有使用它,所以我无法验证这一点。此解决方案的缺点是,您只想在需要时启用它,因为将其启用以进行常规 Web 浏览会扭曲页面元素(如页眉、页脚和侧边栏)的布局。
下载 Greasemonkey for Firefox 或者 下载 Chrome 版 Tampermonkey
可以将以下 UserScript 保存为 *.user.js 文件(例如:tmpscript.user.js),然后在安装 Greasemonkey 后将该文件拖入 Firefox 中以安装 UserScript。
// ==UserScript==
// @name Transform All Links
// @namespace myscripts
// @description Transforms <a=href>link</a> to { link | <a=href>href</a> }
// @include http*
// @version 1
// @grant none
// ==/UserScript==
try{
transformAnchors();
}catch(err){
alert("error#" + err.number + " name: " + err.name + "\n"
+ "message: " + err.message + "\n"
+ "description: " + err.description);
var errmsg = "";
for (atr in err) {
errmsg = errmsg + atr + " = " + err[atr] + "<br>\n";
}
alert(errmsg);
}
function transformAnchors() {
//get every anchor node
var anchornodes = document.getElementsByTagName("A");
//transform every anchor
for (var i=0; i<anchornodes.length; ++i){
//grab the current anchor node
anchornode = anchornodes[i];
//ignore erroneous nodes with no parent
if (anchornode.parentNode == undefined || anchornode.parentNode == null) continue;
//add text sibling before anchor node : { <a=href>link</a>
anchornode.parentNode.insertBefore(document.createTextNode("{ "),anchornode);
//create styled anchor node to preserve styling
styledanchornode = document.createElement("A");
styledanchornode.setAttribute("class",anchornode.getAttribute("class"));
styledanchornode.setAttribute("style",anchornode.getAttribute("style"));
styledanchornode.setAttribute("title",anchornode.getAttribute("title"));
//put styled anchor node before anchor node
anchornode.parentNode.insertBefore(styledanchornode,anchornode);
//move all anchor node children to before anchor node inside styled anchor node : { link <a=href></a>
while (anchornode.hasChildNodes()){
styledanchornode.appendChild(anchornode.childNodes[0]);
}
//remove styling from anchor node
anchornode.removeAttribute("style");
anchornode.removeAttribute("class");
anchornode.removeAttribute("title");
//add text sibling before anchor node : { link | <a=href></a>
anchornode.parentNode.insertBefore(document.createTextNode(" | "),anchornode);
//add href text child inside anchor node : { link | <a=href>href</a>
anchornode.appendChild(document.createTextNode(anchornode.href));
//add text sibling after anchor node : { link | <a=href>href</a> }
anchornode.parentNode.insertBefore(document.createTextNode(" }"),anchornode.nextSibling);
//increment index to compensate for extra styled anchor node
++i
}
}
答案2
我遇到了类似的问题。我能够通过添加额外的步骤来提取大型 .html 文件的超链接的完整地址,即首先将网站内容复制到 .docx 文档中(我猜其他格式也可以)。
这样,文档的结构在某种程度上保持不变(对我来说足够了)。
基于此,可以使用 pandoc 轻松地将 .docx 转换为纯文本:
pandoc -i an.docx -o an.md