2016-07-31 13 views
1

Ich möchte Informationen aus der Tabelle in der folgenden Website mit schönen Suppe in Python 3.5 extrahieren.Schöne Suppe nur Kopfzeile einer Tabelle extrahieren

http://www.askapatient.com/viewrating.asp?drug=19839&name=ZOLOFT 

Ich muss zuerst die Web-Seite speichern, da mein Programm offline arbeiten muss.

Ich speicherte die Webseite in meinem Computer und ich verwendete die folgenden Codes, um Tabelleninformationen zu extrahieren. Aber das Problem ist, dass der Code nur die Überschrift der Tabelle extrahiert.

Dies ist mein Code:

from urllib.request import Request, urlopen 
from bs4 import BeautifulSoup 
url = "file:///Users/MD/Desktop/ZoloftPage01.html" 


home_page= urlopen(url) 
soup = BeautifulSoup(home_page, "html.parser") 
table = soup.find("table", attrs={"class":"ratingsTable" }) 
comments = [td.get_text() for td in table.findAll("td")] 
print(comments) 

Und das ist der Ausgang des Code:

['RATING', '\xa0 REASON', 'SIDE EFFECTS FOR ZOLOFT', 'COMMENTS', 'SEX', 'AGE', 'DURATION/DOSAGE', 'DATE ADDED ', '\xa0’] 

ich in den Tabellenzeilen alle Informationen benötigen. Danke für Ihre Hilfe!

Antwort

1

Dies ist wegen der gebrochen HTML der Seite. Sie müssen zu einem mehr lenient Parser wie html5lib wechseln. Hier ist, was für mich funktioniert:

from pprint import pprint 

import requests 
from bs4 import BeautifulSoup 

url = "http://www.askapatient.com/viewrating.asp?drug=19839&name=ZOLOFT" 
response = requests.get(url, headers={'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36'}) 

# HTML parsing part 
soup = BeautifulSoup(response.content, "html5lib") 
table = soup.find("table", attrs={"class":"ratingsTable"}) 
comments = [[td.get_text() for td in row.find_all("td")] 
      for row in table.find_all("tr")] 
pprint(comments) 
+0

vielen Dank! Ich benutze Python 3.5. Der Code weist den folgenden Fehler auf: "ImportError: Name kann nicht importiert werden, Anfragen '" – Mary

+0

@Mary das Herunterladen des Seitenquellenteils ist hier nicht relevant. Wenn Sie das Beispiel jedoch unverändert verwenden möchten, müssen Sie [Request-Modul] (http://docs.python-requests.org/en/master/) installiert haben. – alecxe

+0

Ich schätze es sehr. Ich danke dir sehr ! – Mary