2012-09-09 30 views
15

私はPythonでhtmlファイルを解析したいと思います。私が使ったモジュールはbeautifulsoupです。私はそれを使用した後beautifulsoup findAll find_all

、何か奇妙なhappened.Itは機能「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') 
print t 
+2

? BS4を使用する予定の場合、importは 'from bs4 import BeautifulSoup'でなければなりません。 http://www.crummy.com/software/BeautifulSoup/bs4/doc/#porting-code-to-bs4 – marchelbling

+1

を参照してください。違いは何ですか?つまり、あなたは両方を使って、あなたは違いを見たと言いました。さまざまな動作を示す出力を投稿できますか?それとも同じことをする2つの方法があるのか​​と尋ねていますか?その場合、Martijn Pietersは正しいです。 – Bakuriu

+0

find_all:モジュールを見つけることができませんでした findAll:HTMLコードのいくつかの部分が見つかりました。 – Oberon

答えて

33

BeautifulSoupバージョン4では、方法はまったく同じです。 (findAllfindAllNextnextSiblingなど)はすべてPython style guideに準拠するように名前が変更されていますが、の古いという名前は引き続き移植が容易になります。完全なリストについては、Method Namesを参照してください。

新しいコードでは、しかし、あなたはバージョンが3(2012年3月以来、がそれを使用していない中止BeautifulSoup を使用しているあなたの例では、など

のでfind_all小文字のバージョンを、使用する必要がありますあなたがそれを助けることができるならば)、findAll()が利用可能であるところ。不明な属性名(.find_allなど)は、その名前でタグを検索しているかのように扱われます。文書内には<find_all>というタグはありません。そのため、Noneが返されます。 BeautifulSoupのソースコードから

関連する問題