Python: извлечение и разбор текста из HTML-файлов - PullRequest
0 голосов
/ 17 октября 2010

Я пытаюсь работать над проектом по ранжированию страниц.

Я хочу создать индекс (словарь), который выглядит следующим образом:
file1.html -> [[кошка, ела, еда, пила, молоко], [file2.html, file3.html]]
file2.html -> [[собака, лаяла, убежала, убегала], [file1.html, file4.html]]

Получить ссылки легко - ищите теги привязки.

Мой вопрос - как мне получить текст? Текст в html-файлах не заключен в такие теги, как <p>

Заранее спасибо за помощь

Ответы [ 2 ]

1 голос
/ 17 октября 2010

Используйте анализатор HTML - что-то вроде BeautifulSoup .

0 голосов
/ 17 октября 2010

Если текст не заключен в теги, действительно ли это HTML?
Как говорит Эмбер, вам будет легче справиться с этим, если использовать какой-то HTML-анализатор, например BeautifulSoup.

В приведенном ниже примере демонстрируется простой метод возврата текста внутри тегов.
Этот метод работает для любого тега AFAIK.

>>> from BeautifulSoup import BeautifulSoup as bs
>>> html = '''
... <div><a href="/link1">link1 contents</a></div>
... <div><a href="/link2">link2 contents</a></div>
... '''
>>> soup = bs(html)
>>> for anchor_tag in soup.findAll('a'):
...   print anchor_tag.contents[0]
... 
link1 contents
link2 contents

Помимо этого, я могу представить, что вы захотитесловарь со счетчиком того, сколько раз определенный термин появился в каком-либо документе HTML.defaultdict хорош для такого рода вещей:

>>> from collections import defaultdict
>>> d = defaultdict(int)
>>> for anchor_tag in soup.findAll('a'):
...   d[anchor_tag.contents[0]] += 1
... 
>>> d
defaultdict(<type 'int'>, {u'link1 contents': 1, u'link2 contents': 1})

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...