LINUX.ORG.RU

Копирование html таблицы

 


0

1

Привет.
Например, имеем html таблицу https://www.ph4.ru/eng_irregular.php?al=a, хочется перенести её в сишный массив:

char *ar[] = {"abide [əˈbʌɪd]", "abode [əˈbʌɪdɪd] abided [əˈbəʊd]", ...};

Проблема: при тупом копировании теряется форматирование (теряются границы полей).

Вопрос: как обрамить начало и конец каждого поля таблицы некоторым символом (" например)?

Можно скопировать таблицы в google docs (табличный режим), например, он умеет макросы, может кто помочь с его написаниме?

Попутный вопрос: копирование в google docs корректно сохраняет границы полей, следовательно, разметка копируется в буфер обмена, почему я не вижу ее при в ставке в текстовый редактор?

★★

Туплю, там табы видимо.

pavlick ★★
() автор топика

Миллионы вариантов. Вот тебе два первых, которые в голову пришли.

  1. Скопировать html код, пройтись регекспом с заменой тегов ‘’ на ‘", "’ в любом блокноте++. Прочие теги снести другим regexp, подсказываю /<[^>]+?>/ любой тег, /<td[^>]*?>/ тег td и тд, подробно https://ru.wikipedia.org/wiki/%D0%A0%D0%B5%D0%B3%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D1%8B%D0%B5_%D0%B2%D1%8B%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F.
  2. Скопировать в excel/openoffice calc, сохранить в формате csv, обычно можно еще разделель выбрать (по дефолту запятая, но можно другой, например ‘|’).
n008_b4800n
()
Ответ на: комментарий от n008_b4800n

Спасибо, но уже разобрался. Вся проблема была в том, что не сразу въехал, что при копировании таблицы между полями табы (думал проблелы, там нет тегов). Поиск и замена табов в своём редакторе проблем не вызывает.

Вопрос не по теме - может знаете, мелкомягкие как-то анонсировали bash on windows, как дела у этого проекта? Достаточно ли полное там окружение (базовые либы)? Можно ли взять консольную линукс софтину (статически прилинковав все либы, может не все) и запустить в винде без всяких лишних телодвижений (иначе вин юзер не осилит)?

pavlick ★★
() автор топика
Последнее исправление: pavlick (всего исправлений: 2)
Ответ на: комментарий от pavlick

Теги - глянуть html исходник, да, тоже вариант.

pavlick ★★
() автор топика

На коленке делается двухмерный массив в консоли браузера:

(() => {
	const table = document.querySelector('.tab');
	const rows = Array.from(table.rows);
	const loneChild = row => row.cells.length < 2;
	const grabCells = row => Array.from(row.cells).map(cell => cell.textContent);
	const concatPayload = row => loneChild(row) ? [] : [grabCells(row)];
	
	return rows.reduce((rows, row) => rows.concat(concatPayload(row)), [])
})()

Правый клик по вернувшемуся значению, «Copy object», и в буфере оказывается это:

[
  [
    "1",
    "abide [əˈbʌɪd]",
    "abode [əˈbʌɪdɪd]abided [əˈbəʊd]",
    "abode [əˈbʌɪdɪd]abided [əˈbəʊd]",
    "обитать, пребывать"
  ],
  [
    "2",
    "arise [əˈraɪz]",
    "arose [əˈroʊz]",
    "arisen [əˈrɪzn]",
    "подняться; возникнуть"
  ],
  [
    "3",
    "awake [əˈwaɪk]",
    "awoke [əˈwoʊk]",
    "awaked [əˈwoʊkn]awoke ",
    "будить; проснуться"
  ],
  [
    "4",
    "backbite [ˈbækbaɪt]",
    "backbitten [ˈbækbɪtən]",
    "backbitten [ˈbækbɪtən]",
    "клеветать"
  ],
  [
    "5",
    "backslide [ˈbækslaɪd]",
    "backslid [bækˈslɪd]",
    "backslid [bækˈslɪd]",
    "отпадать"
  ],
  ...
]

Правда, я профукал ручные разрывы строки.

Princesska ★★★★
()
Последнее исправление: Princesska (всего исправлений: 1)
Ответ на: комментарий от pavlick

Ну, собственно, код, который ты пишешь в консоли в developer tools браузера выполняется в контексте странички как «родной». Можно делать так было испокон веков.
Раньше, еще когда девелопер тулзов не было встроенных, но были разрешены «скриптовые ссылки» - в адресной строке писалось нечто вроде javascript:var x=document.getElementById(...);<next js code statement>;...;...;void(0); (код любой, это я для примера написал, на конце обязательно void(0); - скриптовая ссылка должна вернуть void или ВСЕ содержимое странички будет заменено на значение последнего выражения) и жался enter - все выполнялось. Были оч популярны «ссылки», заставляющие картинки на страничке по орбитам летать и тому подобные непотребства.

Про bash под оффтопом ничего не знаю, кроме cygwin и mingw =) Вообще, ИМХО, все это такое себе, как и wine. Винде виндузовое, пингвину пингвинячье.

n008_b4800n
()

Что за хипстерство.

lynx 'https://www.ph4.ru/cookie-all.php?u=eng_irregular&z=eng&ts=&al=a' --dump, а дальше грепом, седом и матом.

anonymous
()
Ответ на: комментарий от anonymous

lynx '{URL}' --dunmp

А для wget и links2 есть инструкция?

atsym ★★★★★
()
Ответ на: комментарий от pavlick

Баш и другие утилиты никакого отношения к мс не имеют. Можно ставить их, а можно Linux в wsl (2) - у обоих вариантов есть плюсы и минусы.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.