Выделение только текста внутри тега div - PullRequest
0 голосов
/ 26 октября 2010

Я работаю над веб-парсером, используя urllib.Мне нужно иметь возможность сохранять только те строки, которые находятся внутри определенного тега div.например: я сохраняю весь текст в div "body".Это означает, что весь текст внутри тегов div будет возвращен.Это также означает, что если в нем есть другие элементы div, это нормально, но как только я нажимаю на родителя, он останавливается.Есть идеи?

Моя идея

  1. поиск нужного вам div.

  2. Запишите положение.

  3. Следите за любыми делами в будущем.+1 для нового div -1 для конечного div.

  4. когда вы вернетесь к 0, ваш родительский div?Сохранить местоположение.

  5. Затем сохранить данные от начального номера до конечного номера?

Ответы [ 3 ]

3 голосов
/ 26 октября 2010

Использование lxml :

import lxml.html as lh
content='''\
<body>
<div>AAAA
  <div>BBBB
     <div>CCCC
     </div>DDDD
  </div>EEEE
</div>FFFF
</body>
'''
doc=lh.document_fromstring(content)
div=doc.xpath('./body/div')[0]
print(div.text_content())
# AAAA
#   BBBB
#      CCCC
#      DDDD
#   EEEE

div=doc.xpath('./body/div/div')[0]
print(div.text_content())
# BBBB
#      CCCC
#      DDDD
3 голосов
/ 26 октября 2010

Если вам не очень нравится идея разбора HTML-кода самостоятельно, есть два хороших варианта:

Красивый суп

Lxml* 1009.больше ничего не нужно.

YMMV.

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

Лично я предпочитаю lxml в целом, но бывают случаи, когда обработка HTML немного не подходит ... Вот рецепт BeautifulSoup, если это поможет.

...