2015-05-23 3 views
-1

У меня есть около 10000 html загруженных файлов. У них есть раздел html-кода:Извлечь данные с веб-страницы

<tr> 
    <td width="10%" valign="top"><p>City:</p></td> 
    <td colspan="2"><p> 
     London 
    </p></td> 
</tr> 

Что мне нужно - это способ получить города из всех файлов. Я использую linux, поэтому я думал использовать какой-то пакетный файл, чтобы сделать это с помощью sed, но sed не очень хорошо работает с этими файлами из-за некоторых проблем с кодировкой (в некоторых городах есть такие акценты, как Jérica, и они не найдут их имен) , Каков правильный способ сделать это?

+0

Существует не один правильный способ. Вы можете сделать это, используя множество инструментов и языков программирования, и нам нужно будет знать, по крайней мере, какие у вас есть и с которыми вам удобно. Еще по теме, не совсем понятно, почему вы не смогли найти название города. Я предполагаю, что вы хотите проанализировать HTML и найти часть между тегами, вы должны быть в состоянии найти, что не имеет значения для кодировки. После этого вы можете найти другое решение для изменения кодировки списка. Я думаю, что в его нынешнем виде этот вопрос слишком широк. – GolezTrol

+0

Но если вы хотите попробовать 'sed' снова, возможно, вы можете взглянуть на [sed и кодировку UTF8] (http://stackoverflow.com/questions/27072558/sed-and-utf-8-encoding). – GolezTrol

+0

Проблема у меня была то, что у меня есть регулярное выражение, которое находит (или, по крайней мере, я думаю, это так) название города, но sed никогда не найдет его. Затем я обнаружил, что сохранение файла с Sublime Text с помощью utf8 заставил sed найти название города. Поэтому я подумал об изменении всех кодировок html-файлов с помощью iconv (который работал от iso-8859-1 до utf8), но затем акцентированные имена в html не будет отображаться должным образом в firefox с помощью утилиты ut8. Я мог бы сделать копию всех файлов с помощью utf и получить название городов, но я думаю, что это перебор, и поэтому мой вопрос. – PerseP

ответ

2

Ну, самый надежный способ сделать это - использовать синтаксический анализатор HTML (или XML).

Однако, если HTML всегда форматируются точно так же, то есть, как это:

<tr> 
    <td width="10%" valign="top"><p>City:</p></td> 
    <td colspan="2"><p> 
     ******* 
    </p></td> 
</tr> 

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

cat *.html |grep -A2 '<p>City' |tail -n1 |sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//' 
+0

Nice. Но мне пришлось добавить параметр «--text» в grep, потому что он обрабатывал файлы html как двоичные файлы из-за акцентов – PerseP