41

Python で HTML ファイルを解析したいのですが、使用しているモジュールは 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')

誰でも違いを教えてもらえますか?

4

2 に答える 2

73

BeautifulSoupバージョン4では、メソッドはまったく同じです。大文字と小文字が混在するバージョン(、、、findAllなど)はすべて、Pythonスタイルガイドに準拠するように名前が変更されてfindAllNextますが、移植を容易にするために古い名前を引き続き使用できます。完全なリストについては、メソッド名を参照してください。nextSibling

新しいコードでは、小文字のバージョンを使用する必要がありますfind_all

ただし、この例では、BeautifulSoupバージョン3(2012年3月以降廃止されました。サポートできる場合は使用しないfindAll()でください)を使用しています。不明な属性名(.find_allBeautifulSoup 4でのみ使用可能ななど)は、その名前でタグを検索している場合と同じように扱われます。<find_all>ドキュメントにタグがないため、そのためNoneに返されます。

于 2012-09-09T13:21:17.457 に答える
11

BeautifulSoupのソースコードから:

http://bazaar.launchpad.net/~leonardr/beautifulsoup/bs4/view/head:/bs4/element.py#L1260

def find_all(self, name=None, attrs={}, recursive=True, text=None,
                 limit=None, **kwargs):
# ...
# ...

findAll = find_all       # BS3
findChildren = find_all  # BS2
于 2015-12-19T18:29:25.730 に答える