0

Beautiful Soup を使用して HTML テーブルを解析しています。

  • Python バージョン 3.2
  • 美しいスープ バージョン 4.1.3

findAll メソッドを使用して行内の列を検索しようとすると、問題が発生します。リスト オブジェクトに属性 findAll がないというエラーが表示されます。スタック交換に関する別の投稿でこの方法を見つけましたが、これは問題ではありませんでした。( BeautifulSoup HTML テーブル解析)

findAll は Python のリストではなく、BeautifulSoup のメソッドであることに気付きました。奇妙な部分は、テーブルリスト内の行を見つけたときにfindAllメソッドが機能することです(ページの2番目のテーブルのみが必要です)が、行リスト内の列を見つけようとすると.

これが私のコードです:

from urllib.request import URLopener
from bs4 import BeautifulSoup

opener = URLopener() #Open the URL Connection
page = opener.open("http://www.labormarketinfo.edd.ca.gov/majorer/countymajorer.asp?CountyCode=000001") #Open the page
soup = BeautifulSoup(page)

table = soup.findAll('table')[1] #Get the 2nd table (index 1)
rows = table.findAll('tr') #findAll works here
cols = rows.findAll('td') #findAll fails here
print(cols)
4

1 に答える 1

4

findAll()結果リストを返します。それらをループするか、1つを選択して、独自のfindAll()メソッドで別の含まれている要素に到達する必要があります。

table = soup.findAll('table')[1]
rows = table.findAll('tr')
for row in rows:
    cols = rows.findAll('td')
    print(cols)

または1 つの行を選択します。

table = soup.findAll('table')[1]
rows = table.findAll('tr')
cols = rows[0].findAll('td')  # columns of the *first* row.
print(cols)

findAllは推奨されていないことに注意してくださいfind_all()。代わりに使用する必要があります。

于 2013-04-11T14:41:23.273 に答える