LINUX.ORG.RU

Вытягивание данных сайта, в чём ошибка Bash кода?

 , ,


0

2

Пытаюсь сделать скрипт который будет вытягивать данные сайта с использыванием гет запроса и вытягиваем из исходного кода страницы кусок кода с заточением оного в фаил. Собственно код

#!/bin/bash
cat input.txt | while read ; do
wget --quiet -O -  "http://xxx.ru/goods.aspx?search=$REPLY&page=1" | tr -d '\n' | sed 's|^[^>]*>||;s|<[^<]*$||' | grep -o'<div id="Начало блока "'.*'</table>' | sed 's/<h3>[^>]*>//g' | sed 's/<a[^>]*>//g' | sed 's/<[^>]*>//g' | >> output.txt
done;
exit 0

В файл не отправляется ничего.

Убрал

tr -d '\n' | sed 's|^[^>]*>||;s|<[^<]*$||' | grep -o'<div id="Начало блока "'.*'</table>' | sed 's/<h3>[^>]*>//g' | sed 's/<a[^>]*>//g' | sed 's/<[^>]*>//g' |

файл стачивается, и отправляет по списку норм, то есть я не знаю только как вырвать правильно кусок, может кто сказать?

Ответ на: комментарий от zolden

По идее это я хочу убрать лишние теги, а после то что вообще в принцепе получилось отправить в файл output.txt

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

«Начало блока» это я от балды заменил.

CrazyFox
() автор топика

grep -o'<div id=«Начало блока »'.*'</table>'

Кодировка точно совпадает с системной?

| >> output.txt

Пайп уберите, он лишний.

Совет: добавляйте команды в пайп по одной и смотрите, после какой вывод прекратится.

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

Если честно не очень понял суть темы, из за узконаправленного сленга -.- А если честно то кто-нибудь может подсказать как в моём случае вырвать кусок кода который находится в див блоке с известным id, внутри этого блока находятся ещё дивы.

CrazyFox
() автор топика

Теперь получаю файл, но все пробелы и подобные символы превращаются в    Как теперь превратить их в пробелы понятные для блокнота? и .txt формата в частности.

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

Тебе все подскажут, если ты приведёшь пример входных и выходных данных, не заставляя взрослых бородатых дядей гадать, что ты там имел в виду

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

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

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

Прошу прощения, уже разобрался, собственно можно сказать сам разобрался, но есть ещё несколько вопросов. 1) Как проще всего реализовать вставку после определённого набора символов вставку своего слова (Есть в документе n количество упоминаний надписи «р.» Надо после каждого упоминания вставить «<br />» 2) Надо удалить Одинаковые повторяющиеся строчки (Для примера тот же фаил и там местами упоминается две строчки " Разработка: что то там © 2011«Фирма name»" )

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

1) sed -i 's/p/p<br/>/g' file только с экранированием уточнись

zolden ★★★★★
()

Эээ в использовании пёс знает чего вместо Perl?

Hoodoo ★★★★★
()

Ещё один пытается разбирать контекстно-свободную грамматику конечным автоматом и не понимает почему у него чего-то не получается.

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