LINUX.ORG.RU

Можно не регулярками, а преобразовать в plain text с помощью curl. Вариант?

ЗЫ Ну или не с помощью курла, а как его дьявола, не помню, какой-то текстовый браузер короче...

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

Ну можно, но как я нужные данные потом найду в этой каше?

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

MS Front Page, MS Word, LibreOffice Writer для допиливания -- вариант применить?

Infra_HDC ★★★★★
()

Мне нравится Beautiful Soup в питоне.

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

Неужели ничего лучше не люди придумали?

Тебе дают универсальный инструмент, а ты выкобениваешься. Там ничего сложного:

grep_search_files="    grep 'Post.register' | egrep -o '\"file_url\":\"[^\"]+'    | cut -c 13-"
grep_search_tags="     grep 'Post.register' | egrep -o '\"tags\":\"[^\"]+'        | cut -c 9-"
grep_search_ids="      grep 'Post.register' | egrep -o '\"id\":[^,]+'             | cut -c 6-"
grep_search_scores="   grep 'Post.register' | egrep -o '\"score\":[^,]+'          | cut -c 9-"
grep_search_descs="    grep 'Post.register' | egrep -o '\"description\":[^,]+'    | cut -c 15-"
grep_search_rating="   grep 'Post.register' | egrep -o '\"rating\":\"[^\"]+'      | cut -c 11-"
grep_search_width="    grep 'Post.register' | egrep -o '\"width\":[^,]+'          | cut -c 9-"
grep_search_height="   grep 'Post.register' | egrep -o '\"height\":[^,]+'         | cut -c 10-"
PPP328 ★★★★★
()

не проходит валидацию у xmllint и tidy

я не понял, tidy его совсем распарсить не может, или просто показывает что есть ощибки?

annulen ★★★★★
()

Ну и да, в регулярках нет ничего плохого, если надо просто выдрать часть информации, а не строить DOM полностью

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

Обмылок при некорректном html начинает себя непредсказуемо вести. Я его как-то раз юзал для полсотни недокачанных страниц. В зависимости от степени докачанности субноды уходили то в одни кучеря, то в другие.

PPP328 ★★★★★
()

В общем случае: забить на валидацию и юзать какой-нибудь Beautiful Soup, html5lib или lxml.

пригодное для обработки

чем и на чём?

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

Возьми любой из упомянутых питоновских модулей и просто попробуй. Даже если ты не в ладах с питоном — пошаговых мануалов по теме «python webscraping» вагон и тележка.

Ну или кусок файла покажи, а то я не понимаю эти страдания по поводу некорректности документа.

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

На счёт недокаченых не знаю (всё-таки это уже экстрим), а вот обычный невалидный HTML (т.е. обычный HTML :) он хавает нормально. Там только надо правильный парсер в нём выбрать, что-бы он игнорил ошибки

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

Оно прекрасно парсится супом. У каждого элемента свой класс, никаких проблем быть не должно.

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

Ещё есть вариант попробовать понять что именно в документе делает его невалидным (порой это какая-то мелочь) и попробовать удалить это регулярками перед тем как скармливать текст парсеру

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

Да-да, держите нас в курсе. Там в примере обычный html5, между прочим:

$ tidy auto-shops 2>&1 | grep Error
line 135 column 17 - Error: <header> is not recognized!
line 136 column 17 - Error: <section> is not recognized!
line 190 column 9 - Error: <noindex> is not recognized!
line 333 column 9 - Error: <section> is not recognized!
line 335 column 25 - Error: <main> is not recognized!
line 342 column 9 - Error: <noindex> is not recognized!

Ну и маразмы по типу такого:

'\n\n\t\t\t\t\t\t\t\t\tАвтонародный\n\t\t\t\t\t\t\t\t\n'

тут уж только автозаменой.

Имхо, ТС просто решает эту задачу в первый раз и не хочет в программирование. Тут я даже не знаю что советовать, может проще будет тот же ParseHub под оффтопиком запустить?

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

lorcode и заставить парсить автора лоркода в наказание.
парсить автора лоркода

Парсер выполнил недопустимую операцию и будет закрыт.

h578b1bde ★☆
()
Ответ на: Шизофреник от awesomelackware

автор лоркода должен парсить свой же лоркод

Пожизненно.

h578b1bde ★☆
()
Ответ на: комментарий от ShizuShidou

Имхо, ТС просто решает эту задачу в первый раз и не хочет в программирование.

Неправда. Решаю не в первый раз, хочу сделать по-людски, а не как обычно.

crutch_master ★★★★★
() автор топика
Ответ на: комментарий от MrClon

Не. Я ищу какой-нибудь инструмент, который может что-нибудь типа

curl mysite.com | htmlparser --xpath "//alala/lala/" 
и выдаёт всё, что надо без танцев с регулярками.

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

Python + Beautiful Soup, как вариант.

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

curl mysite.com | htmlparser --xpath «//alala/lala/»

Так не выйдет, одним xpath'ом жив не будешь — что-то понадобится в цикле обходить, что-то корректировать, фильтровать и т.п.

хочу сделать по-людски, а не как обычно

Так всё уже озвучено, потребуется:

  • python3 и базовое знание python
  • модули на выбор:
    • lxml
    • BeautifulSoup
    • html5lib (не пробовал, но говорят, что неплох, особенно на битой структуре)
    • selenium + phantomjs || firefox (оверкилл, присутствуют баги в драйвере файрфокса, зато работает на движке браузера, соответственно умеет интерпретировать javascript)
    • scapy (как-то у меня до него руки не доходят, причем всё время).
  • удобный интерпретатор для тыкания в интересующие объекты на живую (ipython3 или idle3)
  • какое-нибудь IDE, можно просто Sublime c Jedi и SublimeLinter-flake8

З.Ы. В свое время неплохо работала связка из перлового WWW::Mechanize::Firefox + MozRepl + HTML::TreeBuilder::XPath, но оно уже умерло, имхо.

З.З.Ы. Пару примеров из гугла (для начала):

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

Так не выйдет, одним xpath'ом жив не будешь — что-то понадобится в цикле обходить, что-то корректировать, фильтровать и т.п.

Это мелочи.

Так всё уже озвучено, потребуется:
....
........
............

Я пока ждал ответ уже кослытей на пёрле наделал с регулярками. Но каждый раз писать что-то сильно сложнее однострочника всё равно желания особо нет.

crutch_master ★★★★★
() автор топика
Ответ на: комментарий от anonymous00

Спасибо, интересный набор. В простых случаях — самое то. Записал себе в список пакетов для обязательной установки.

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