2017-06-11 3 views
0

Ich habe versucht, einen Haufen verschiedener Kombinationen von Code zu versuchen und die Tabellendaten aus dieser Tabelle zu bekommen. Wenn Sie einfach soup.table verwenden, wird diese bestimmte Tabelle nicht von der Seite zurückgegeben, und ich kann nicht herausfinden, warum.Schöne Suppe: Parsing Tabelle Zeilendaten gibt einen Fehler

Ich habe es gefunden, indem ich class_:'table assessment-item' nach Klasse zu finden, aber wenn ich versuche, einzelne Zeilen oder Daten zu analysieren, löst es einen Fehler aus.

import requests 
from bs4 import BeautifulSoup 
page = requests.get("https://www.qut.edu.au/study/unit?unitCode=IFB104") 

soup = BeautifulSoup(page.content, 'html.parser') 
table = soup.find_all(class_='table assessment-item') 
table_data = table.find_all('td') 

Der Fehler:

Traceback (most recent call last): 
File "/Users/study/Desktop/QUT Final/demo.py", line 7, in <module> 
table_data = table.find_all('td') 
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/bs4/element.py", line 1807, in __getattr__ 
"ResultSet object has no attribute '%s'. You're probably treating a list of items like a single item. Did you call find_all() when you meant to call find()?" % key 

Antwort

4

Es gibt drei Tabellen zurück Klasse als 'table assessment-item' haben.

Sie müssen nur über sie iterieren:

table = soup.find_all(class_='table assessment-item') 

table_data = [tbl.find_all('td') for tbl in table] 

print table_data 
+0

Ich verstehe Ihre Antwort, aber ich verstehe nicht, warum ich nicht drei Tabellen als eine Variable kann ... – yeeeeee

+0

Wie kann ich jede Schleife brechen in eine neue Variable? (Dies ist wirklich das erste Mal, dass ich Python getan habe, so ist es so etwas wie): 'für tbl in der Tabelle: \t i ++ \t "tbl \ i"= tbl.find_all ('td') \t return„Tabl \ " – yeeeeee

+0

Nvm. Herausgefunden. 'Tabelle [0], Tabelle [1], Tabelle [2]' – yeeeeee