2016-03-22 2 views
-2

Я использую wget для загрузки HTML-страницы и извлечения информации из. В частности, я хочу это сделать:Извлечение информации из документов HTML с использованием командной строки

<a href="/312728/" title="The 10 Best Goals ever"> 
<a href="/671921/" title="Golf at its best"> 
<a href="/371285/" title="Football Legends"> 
<a href="/576903/" title="Boxing Legends"> 

в это и сохранить как файл txt.

/312728/The 10 Best Goals ever 
/671921/Golf at its best 
/371285/Football Legends 
/576903/Boxing Legends 

Я пробовал:

wget --quiet -O - http://some-site.com | grep -o '<a href="/?/" title="?"> > new.txt 

, но это не дало мне желаемых результатов.

+0

'grep' или регулярное выражение в целом не является правильным инструментом для извлечения информации из языков разметки , Существует множество примеров того, как это сделать в Интернете. Тем не менее, вы также найдете множество неправильных примеров, используя регулярные выражения. Я немного перефразировал ваш вопрос. Надеюсь, это немного изменит ваши решения, отличные от 'grep'. – hek2mgl

ответ

1

Изменение grep к egrep для некоторых мельче регулярных выражений способностей, вы можете сделать что-то вроде:

wget --quiet -O - http://some-site.com | egrep -e '<a href="\/[0-9]*\/" title="[:alnum:]*' 

Который должен вернуться:

<a href="/312728/" title="The 10 Best Goals ever"> 
<a href="/671921/" title="Golf at its best"> 
<a href="/371285/" title="Football Legends"> 
<a href="/576903/" title="Boxing Legends"> 

Тогда, используя awk мы можем разграничить эти вещи дважды -quote и выберите части, которые вы хотите вернуть:

wget --quiet -O - http://some-site.com | egrep -e '<a href="\/[0-9]*\/" title="[:alnum:]*' | awk -F'"' '{print $2$4}' 

Который должен вернуть это:

/312728/The 10 Best Goals ever 
/671921/Golf at its best 
/371285/Football Legends 
/576903/Boxing Legends 

Что вы могли бы перенаправить в текстовый файл, например так:

wget --quiet -O - http://some-site.com | egrep -e '<a href="\/[0-9]*\/" title="[:alnum:]*' | awk -F'"' '{print $2$4}' >> mytextfile.txt 
+0

нет, что я написал с помощью wget, ничего не возвращает ничего, поэтому мне нужна помощь, чтобы написать его, и их много не только 4 – bob

+0

может кто-нибудь помочь – bob

+0

Сложно сказать, так как я понятия не имею, как выглядит ваш html , Возможно, для вашего grep: 'egrep -e ' JNevill

Смежные вопросы