LINUX.ORG.RU

Как с помощью bash спарсить динамически подгружаемый контент?

 , , , ,


0

0

Привет, решил немного освоить баш скриптинг. Попробовал написать парсер rss блога тумблера, с последующей закачкой картинок. Наплодив костылей пришел к рабочему результату.

Сейчас решил немного усложнить скрипт, т.к. в rss довольно мало постов. Попробовал с помощью архива статей заполучить все картинки. Но столкнулся с проблемой. Выполняю:

$ curl http://antoshabrain.tumblr.com/archive | iconv -f iso8859-1 -t utf-8 | grep -o 'class=«post_notes»[^>]*'

Но получаю гораздо меньше результатов, чем есть на самом деле(сори за качество).

Если открыть страницу в браузере, то видно что контент подгружается джиквери по мере прогрузки страницы вниз, видимо, курл как раз не понимает, что ниже что то есть и отдает не полные результаты. Подскажите, как можно поступить?

Это не курл не понимает, это у вас полное отсутствие какого-либо понимания о предметной области, которую собираетесь парсить.

Используйте для этого nodejs, либо раскапывайте скрипты подгрузки и копайте первоисточник.

BaBL ★★★★★
()

http://stackoverflow.com/a/1732454/1203698

Для рсс парсеры тоже давно написаны.

Смотри куда делает запрос аякс и спрашивай там же.

Kalashnikov ★★★
()

Написать на bash браузер c js.

anonymous
()

Боюсь, что никак. Curl не имеет встроенного парсера DOM и виртуальной машины с поддержкой JavaScript. Он просто загружает текст. Я подозреваю, что к веб-разработке вы не имеете никакого отношения, и даже не знаете как устроен типичный браузер? Вы можете соорудить консольную программу для вашего кейса на базе PhantomJS. Но решение подобной задачи требует определённых познаний в написании скриптов на Java Script. Bash вам не очень поможет в данной ситуации.

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

Показалось интересной задачей, сделать парсер. Ну раз curl для этой задачи на баш не подходит(именно для парсинга), то буду что нибудь другое придумывать. Спасибо за развернутый ответ

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

Парсить HTML/JSON/XML (и прочие многоуровневые структуры со строгим синтаксисом) средствами bash - плохая идея. Хотя если использовать какой-нибудь xsltproc, может и получиться.

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