Скопировать выделенный текст со ссылками в текстовом формате?
Есть ли способ скопировать ссылку с выделенным текстом?
"Какой-то выделенный текст с этой ссылкой где-то в абзаце"
Копировать как:
"Какой-то выделенный текст с этой {ссылкой | http://example.com/ } где-то в абзаце"
Если есть что-то подобное, было бы здорово помочь.
1 ответ
Одним из решений может быть преобразование каждой ссылки на странице в желаемый формат. Это можно сделать с помощью Greasemonkey в Firefox и пользовательского сценария UserScript. В качестве альтернативы, Tampermonkey for Chrome также может работать, но я им не пользуюсь, поэтому не могу это проверить. Недостатком этого решения будет то, что вы захотите включить его только тогда, когда это необходимо, потому что если оставить его включенным для обычного просмотра веб-страниц, это приведет к искажению макета элементов страницы, таких как верхние и нижние колонтитулы и боковые панели.
Скачать Greasemonkey для Firefox ИЛИ Скачать Tampermonkey для Chrome
Следующий пользовательский код может быть сохранен в файл *.user.js (например, tmpscript.user.js), а затем этот файл можно перетащить в Firefox после установки Greasemonkey для установки пользовательского кода.
// ==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
}
}
У меня была аналогичная проблема. Мне удалось извлечь полный адрес гиперссылок большого файла.html, добавив дополнительный шаг, а именно сначала скопировав содержимое веб-сайта в документ.docx (думаю, другие форматы тоже подойдут).
Таким образом, структура документа в какой-то степени осталась прежней (мне достаточно).
Исходя из этого,.docx можно легко преобразовать в открытый текст с помощью pandoc:
pandoc -i an.docx -o an.md