Разница между "findAll" и "find_all" в BeautifulSoup

Я хочу проанализировать HTML файл с помощью Python, и я использую модуль BeautifulSoup.

Говорят, что функция find_all такая же, как findAll. Я пробовал оба из них, но я считаю, что они разные:

import urllib, urllib2, cookielib
from BeautifulSoup import *
site = "http://share.dmhy.org/topics/list?keyword=TARI+TARI+team_id%3A407"

rqstr = urllib2.Request(site)
rq = urllib2.urlopen(rqstr)
fchData = rq.read()

soup = BeautifulSoup(fchData)

t = soup.findAll('tr')

Кто-нибудь может сказать мне разницу?

Ответы

Ответ 1

В версии BeautifulSoup 4 методы точно такие же; версии для смешанного варианта (findAll, findAllNext, nextSibling и т.д.) были переименованы в соответствие с Руководство по стилю Python, но старые имена по-прежнему доступны для упрощения переноса. См. Имена методов для полного списка.

В новом коде вы должны использовать нижестоящие версии, поэтому find_all и т.д.

В вашем примере, однако, вы используете BeautifulSoup версии 3 (прекращено с марта 2012 года, не используйте его, если вы можете ему помочь), где доступен только findAll(). Неизвестные имена атрибутов (например, .find_all, которые доступны только в BeautifulSoup 4) обрабатываются так, как если бы вы искали тег под этим именем. В вашем документе нет тега <find_all>, поэтому для него возвращается None.