2017-03-03 5 views
0

私はPythonを初めて使いました。テーブルからデータの「価格」列を取得したいのですが、そのデータを取得できません。私は、値の範囲外のリストインデックスを得続けるPythonと美味しいスープを使ってテーブルからカラムを取得

# Libraies 
from urllib.request import urlopen 
from bs4 import BeautifulSoup 

html = urlopen("http://pythonscraping.com/pages/page3.html") 
soup = BeautifulSoup(html, "html.parser") 
table = soup.find("table") 

for row in table.find_all("tr"): 

    col = row.find_all("td") 

    print(col[2]) 
    print("---") 

:私はやっている現在、どのような

。私はドキュメントを読んでいくつかの方法を試しましたが、私はそれを理解できません。

また、私はPython3を使用しています。

答えて

0

問題は、あなたがテーブル内のすべてのtrを反復処理しているということであるた場所例を無視することができ、冒頭に1つのヘッダーtrが必要でないので、その1つを使用しないでください。

# Libraies 
from urllib.request import urlopen 
from bs4 import BeautifulSoup 

html = urlopen("http://pythonscraping.com/pages/page3.html") 
soup = BeautifulSoup(html, "html.parser") 
table = soup.find("table") 

for row in table.find_all("tr")[1:]: 

    col = row.find_all("td") 

    print(col[2]) 
    print("---") 
+0

これは問題でした。次回はテーブル構造を確認しています。 – liquidsword92

0

おそらく、行の1つにtdというタグがないことを意味します。あなたはブロックを除き、試しにcol[2]printまたは任意の使用をラップし、colが空であるか、以下3項目

for row in table.find_all("tr"): 

    col = row.find_all("td") 
    try: 
     print(col[2]) 
     print("---") 
    except IndexError: 
     pass 
関連する問題