Страница 1 из 1
Выборка URL из файла типа xml.
Добавлено: 2013-03-27 8:46:10
Vlad5503
Поставлена задача сделать скрипт, который делает выборку URL и IP, сортирует строки и выгружает в разные текстовые файлы. По выборке IP адресов сделал скрипт - работает.
Исходный файл такой:
Код: Выделить всё
<?xml version="1.0" encoding="windows-1251" ?>
- <reg:register updateTime="2013-03-27T06:09:00+04:00" xmlns:reg="http://rsoc.ru" xmlns:tns="http://rsoc.ru">
- <content id="60" includeTime="2013-01-12T16:33:38">
<decision date="2012-11-03" number="14-РИ" org="Роскомнадзор" />
- <url>
- <![CDATA[ http://s4.artemisweb.jp/settoto/
]]>
</url>
- <domain>
- <![CDATA[ s4.artemisweb.jp
]]>
</domain>
<ip>124.35.0.146</ip>
</content>
Часть текста от
- <content id до
</content> повторяется несколько сотен раз, но там разные URL и IP.
Выходной файл должен быть такого формата:
Код: Выделить всё
1magehut.com/users.php?act=gallery&gal=81&page=4
23krasnodar.net/kuritelnyie-smesi/
27habarovsk.net
27habarovsk.net/
27habarovsk.net/analogi-jwh/
27habarovsk.net/hypnotic-gipnotik-2012/
27habarovsk.net/tag/green-pills/
34volgograd.net/
34volgograd.net/
34volgograd.net/kuritelnyie-smesi/
34volgograd.net/tag/kuritelnye-smesi/
Вот прошу помощи у Вас. Может дадите пример скрипта который мог бы делать выборку такого текста наподобие
и выгружал бы их построчно в отдельный файл.
С огромной надеждой, а то дня два как

.
Re: Выборка URL из файла типа xml.
Добавлено: 2013-03-27 11:35:17
Vlad5503
Пока могу получить текст CDATA и http:// из исходного файл через команду
Код: Выделить всё
cat dump.xml | grep -o '\http://\+' > urlb.txt
.
не получается подобрать условие выборки так чтоб выбирал с http:// и до первых двойный квадратных скобок идущие после url. Но нифига пока....

Re: Выборка URL из файла типа xml.
Добавлено: 2013-03-27 13:20:04
gumeniuc
Какие конкретно разделители между CDATA[%ТУТ%URL%И_ТУТ%]] ? Пробелы ?
Re: Выборка URL из файла типа xml.
Добавлено: 2013-03-27 14:02:43
Vlad5503
в редакторе вижу так:
Код: Выделить всё
<url><![CDATA[http://s4.artemisweb.jp/settoto/]]>
Т.е. пробелов нет.
Re: Выборка URL из файла типа xml.
Добавлено: 2013-03-27 14:40:09
gumeniuc
если файл не меняется и только адреса другие, то попробуйте
Код: Выделить всё
cat dump.xml | grep -o '\http://\+' | cut -d '[' -f3 | cut -d ']' -f1 > urlb.txt
Re: Выборка URL из файла типа xml.
Добавлено: 2013-03-27 14:52:34
Vlad5503
Попробовал..
в итоге получил 583 строки такого вида:
Код: Выделить всё
http://
http://
http://
http://
http://
http://
Re: Выборка URL из файла типа xml.
Добавлено: 2013-03-27 15:02:09
Vlad5503
ради интереса посмотрел файл Notepad+.
он выдал своим поиском:
Re: Выборка URL из файла типа xml.
Добавлено: 2013-03-27 16:01:08
gumeniuc
Код: Выделить всё
cat dump.xml | grep -o '\http://\+' > urlb.txt
покажите пожалуйтса пару строк из файла urlb.txt
Re: Выборка URL из файла типа xml.
Добавлено: 2013-03-27 17:53:18
Vlad5503
Код: Выделить всё
cat dump.xml | grep -o '\http://\+' > urlb.txt
Они такого вида
Если так
Код: Выделить всё
cat dump.xml | grep -o '\CDATA\+' > urlb.txt
то:
Re: Выборка URL из файла типа xml.
Добавлено: 2013-03-27 20:52:41
gumeniuc
Хмм.. Хорошо,
Хочется посмотреть как он выводится в консоли.
Ведь если
Код: Выделить всё
cat dump.xml | grep -o '\CDATA\+' > urlb.txt
выдаёт только CDATA, значит в разных строках...
Re: Выборка URL из файла типа xml.
Добавлено: 2013-03-28 5:37:51
Vlad5503
Файл xml и он,например, в редакторе Notepad+ в режиме редактора(F4) показывает одну строку, а в режиме чтения(F3) показывае каждое поле как строка.
Вот что увидел по команде
Код: Выделить всё
cat dump.xml | less
<?xml version="1.0" encoding="windows-1251"?><reg:register updateTime="2013-03-26T06:09:00+04:00" xmlns:reg="http://rsoc.ru" xmlns:tns="http://rsoc.ru"><content id="60" includeTime="2013-01-12T16:33:38"><decision date="2012-11-03" number="14-<F2><E9>" org="<F2><CF><D3><CB><CF><CD><CE><C1><C4><DA><CF>
<D2>"/><url><![CDATA[http://s4.artemisweb.jp/settoto/]]></url><domain><![CDATA[s4.artemisweb.jp]]></domain><ip>124.35.0.146</ip></content><content id="68" includeTime="2012-11-09T10:21:34"><decision date="2012-11-03" number="9" org="<F2><CF><D3><D0><CF><D4><D2><C5><C2><CE><C1><C4><DA><CF><D2>"/><url><![CDATA[http://fast-die.kiev.ua/index.php]]></url><domain><![CDATA[fast-die.kiev.ua]]></domain><ip>77.87.193.143</ip></content><content id="82" includeTime="2012-11-11T14:14:15"><decision date="2012-11-04" number="2/1/16392" org="<E6><F3><EB><EE>"/><url><![CDATA[http://www.narkop.biz/]]></url><domain><![CDATA[narkop.biz]]></domain><ip>188.40.93.186</ip></content><content id="85" includeTime="2012-11-11T14:54:24"><decision date="2012-11-04" number="2/1/16412" org="<E6><F3><EB><EE>"/><url><![CDATA[http://growclub.org]]></url><domain><![CDATA[growclub.org]]></domain><ip>94.76.232.2</ip></content><content id="93" includeTime="2012-11-11T15:21:42"><decision date="2012-11-04" number="2/1/16396" org="<E6><F3><EB><EE>"/><url><![CDATA[http://bigdiller.com]]></url><domain><![CDATA[bigdiller.com]]></domain><ip>46.165.197.65</ip></content><content id="97" includeTime="2012-11-10T18:46:06"><decision date="2012-11-04" number="2/1/16404" org="<E6><F3><EB><EE>"/><url><![CDATA[http://www.narkotiki.name/]]></url><domain><![CDATA[narkotiki.name]]></domain><ip>188.40.120.113</ip></content><content id="98" includeTime="2012-11-10T18:47:48"><decision date="2012-11-04" number="2/1/16424" org="<E6><F3><EB><EE>"/><url><![CDATA[http://tor4.su/]]></url><domain><![CDATA[tor4.su]]></domain><ip>176.9.16.90</ip></content><content id="103" includeTime="2012-11-11T15:33:38"><decision date="2012-11-04" number="2/1/16407" org="<E6><F3><EB><EE>"/><url><![CDATA[http://www.shram.kiev.ua/fun/ganja.shtml]]></url><domain><![CDATA[shram.kiev.ua]]></domain><ip>193.200.173.204</ip></content><content id="105" includeTime="2012-11-11T15:39:37"><decision date="2012-11-04" number="2/1/16402" org="<E6><F3><EB><EE>"/><url><![CDATA[http://go-krit.com/workshop/]]></url><domain><![CDATA[go-krit.com]]></domain><ip>62.75.182.189</ip></content>
:
Re: Выборка URL из файла типа xml.
Добавлено: 2013-03-28 11:05:12
gumeniuc
Раз в одну строку тогда как-то так
Код: Выделить всё
cat dump.xml | tr \> \\n | grep "\[CDATA\[http" | cut -d '[' -f3 | cut -d ']' -f1
Re: Выборка URL из файла типа xml.
Добавлено: 2013-03-28 11:16:39
Vlad5503
gumeniuc писал(а):Раз в одну строку тогда как-то так
Код: Выделить всё
cat dump.xml | tr \> \\n | grep "\[CDATA\[http" | cut -d '[' -f3 | cut -d ']' -f1
ОГРОМНОЕ СПАСИБО за оказанную помощь!!!
Re: Выборка URL из файла типа xml.
Добавлено: 2013-03-28 13:34:47
vadim64
ребята, извините конечно, может оффтоп, но всё же:
вы вообще в курсе для чего и почему был изобретён xml? вам не кажется что он как то херово подходит для того, чтобы парситься вот так вот?
Re: Выборка URL из файла типа xml.
Добавлено: 2013-03-28 13:52:40
Vlad5503
Можете предложить ещё проще обработку файла xml ?
Re: Выборка URL из файла типа xml.
Добавлено: 2013-03-28 14:00:29
vadim64
я не уверен что вам это подойдёт
если вы знакомы с каким нибудь питоном или пыхом, то через него вы можете пользоваться специальными классами для работы с xml
если вам это недоступно, то можете погуглить на тему xml-coreutils, там есть тулзы аля xml-cat, xml-grep и т.д. ну вы поняли что они делают, наверное. названия должны подсказать.
Re: Выборка URL из файла типа xml.
Добавлено: 2013-03-28 14:02:09
vadim64
щас увидел что вы нашли своё решение, можете проигнорировать мои сообщения
Re: Выборка URL из файла типа xml.
Добавлено: 2013-03-28 14:06:01
Vlad5503
Ну почему? Спасибо, я почитаю про "xml-coreutils, там есть тулзы аля xml-cat, xml-grep и т.д.".
Учиться никогда не поздно....
Если скинете ссылочки где есть описание и примеры(чтоб долго не искать) или Ваши примеры по обработке xml, буду признателен.
Re: Выборка URL из файла типа xml.
Добавлено: 2013-03-28 14:19:35
vadim64
к сожелению не имел практического знакомства с этими штуками, запомнил просто из какой то статьи-обзора возможностей xml
Re: Выборка URL из файла типа xml.
Добавлено: 2013-03-28 14:34:59
gumeniuc
vadim64,
Согласен конечно, что с xml так работать в корне неверно. Вот от Вас первый раз услышал про xml-grep, почитаю на досуге. Тот же Perl конечно умеет правильно работать с xml, но тут видимо речь шла про shell в одну строку.
Re: Выборка URL из файла типа xml.
Добавлено: 2013-03-28 14:52:44
vadim64
формально: я уже указал, что мои сообщения возможно рассматривать как оффтоп и даже игнорировать
по факту: ну вы поняли, да, что тупым боком топора можно гвозди забивать, но когда сообщают про существование молотка почему то задумываешься...
Выборка URL из файла типа xml.
Добавлено: 2016-12-13 16:13:32
brainiac
gumeniuc писал(а):Раз в одну строку тогда как-то так
Код: Выделить всё
cat dump.xml | tr \> \\n | grep "\[CDATA\[http" | cut -d '[' -f3 | cut -d ']' -f1
Раз плюсануть нельзя, то просто скажу "спасибо"!