Красивый Суп и извлечение отделения и его содержания идентификатором

soup.find("tagName", { "id" : "articlebody" })

Почему это НЕ возвращается <div id="articlebody"> ... </div> теги и промежуточный материал? Это ничего не возвращает. И я знаю для факта, он существует, потому что я смотрю прямо на него от

soup.prettify()

soup.find("div", { "id" : "articlebody" }) также не работает.

Править: Никто не отвечает к этому сообщению - как я удаляю его? Я нашел, что BeautifulSoup не анализирует правильно, который, вероятно, на самом деле означает страницу, которую я пытаюсь проанализировать, правильно не отформатирован в SGML или что бы то ни было.

138
задан Tony Stark 26 January 2010 в 21:48
поделиться

6 ответов

Вы должны опубликовать свой пример документа, потому что код работает нормально:

>>> import BeautifulSoup
>>> soup = BeautifulSoup.BeautifulSoup('<html><body><div id="articlebody"> ... </div></body></html')
>>> soup.find("div", {"id": "articlebody"})
<div id="articlebody"> ... </div>

Нахождение

Внутри
работает:

>>> soup = BeautifulSoup.BeautifulSoup('<html><body><div><div id="articlebody"> ... </div></div></body></html')
>>> soup.find("div", {"id": "articlebody"})
<div id="articlebody"> ... </div>
186
ответ дан 23 November 2019 в 23:27
поделиться

Вот фрагмент кода

soup = BeautifulSoup(:"index.html")
titleList = soup.findAll('title')
divList = soup.findAll('div', attrs={ "class" : "article story"})

, как вы видите, я нахожу все теги, а затем я нахожу все теги с Class = «Статью» внутри

3
ответ дан 23 November 2019 в 23:27
поделиться

Я использовал:

soup.findAll('tag', attrs={'attrname':"attrvalue"})

как мой синтаксис для поиска / Findall; Это сказано, если не существует других необязательных параметров между списком тегов и атрибута, это не должно быть другим.

4
ответ дан 23 November 2019 в 23:27
поделиться

В источнике BeautifulSououous эта строчка позволяет вложить Divs в рамках Divs; Таким образом, ваша забота в комментарии Лукас не будет действительным.

NESTABLE_BLOCK_TAGS = ['blockquote', 'div', 'fieldset', 'ins', 'del']

Что я думаю, вам нужно сделать, это указать привлечения, которые вы хотите, например,

source.find('div', attrs={'id':'articlebody'})
8
ответ дан 23 November 2019 в 23:27
поделиться
-

Вы пробовали SUP.findall («Div», {«ID»: «Articlebody»}) ?

звучит с ума, но если вы соскабливаете Вещи из дикой природы, вы не можете исключить несколько Divs ...

5
ответ дан 23 November 2019 в 23:27
поделиться

Я думаю, что возникает проблема, когда теги 'div' слишком много вложены. Я пытаюсь разобрать некоторые контакты из html-файла facebook, и Beautifulsoup не может найти теги «div» с классом «fcontent».

То же самое происходит и с другими классами. Когда я ищу div вообще, оказываются только те, которые не так уж много вложены.

Исходный код html может быть любой страницей из facebook списка друзей вашего друга (не одного из ваших друзей). Если кто-то сможет протестировать его и дать совет, я был бы очень признателен.

Это мой код, в котором я просто пытаюсь вывести количество тегов «div» с классом «fcontent»:

from BeautifulSoup import BeautifulSoup 
f = open('/Users/myUserName/Desktop/contacts.html')
soup = BeautifulSoup(f) 
list = soup.findAll('div', attrs={'class':'fcontent'})
print len(list)
11
ответ дан 23 November 2019 в 23:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: