2016-10-17 5 views
-7

Ich bekomme Fehler beim Ausführen.BeautifulSoup Fehler

import requests 
from bs4 import BeautifulSoup 

url = "http://sport.citifmonline.com/" 
url_page_2 = "url" + "2016/10/15/chelsea-3-0-leicester-city-dominant-blues-comfortable-against-champions-photos/" 
r = requests.get(url) 

soup = BeautifulSoup(r.content, "html5lib") 

links = soup.find_all("a") 

for link in links: 
    print "<a href='%s'>%s</a>" %(link.get("href"), link.text) 

g_data = soup.find_all("div", {"class": "wrapper"}) 

for item in g_data: 
    articles = item.content[0].find_all("a", {"class": "cat-box-content"})[0].text 
    try: 
     print item.contents[1].find_all("h3", {"class": "post-box-title"})[0].text 
    except: 
     pass 
+4

Welche Fehler? Veröffentlichen Sie die Rückverfolgung bitte. – alecxe

+0

Nicht jeder ist bereit oder in der Lage, Ihren Code auszuführen. aber einige können Ihnen immer noch helfen, wenn Sie genau zeigen, welche Fehler Sie bekommen und beschreiben, was Sie bereits versucht haben, um das Problem zu lösen. – Daniel

+0

File "", Zeile 2 print "%s" % (link.get ("href"), link.text) ^ IndentationError: erwartet, dass ein eingekerbte Block @ Daniel – Nyamedorba

Antwort

0

Wenn Sie nicht html5lib (beispielsweise mit pip install html5lib) installiert haben, werden Sie nicht in der Lage sein, diesen Parser zu verwenden, ohne einen Fehler. Sie könnten es entweder installieren oder z. für "html.parser" statt, die auch in den documentation of BeautifulSoup erwähnt - nur, um Fehler zu vermeiden:

soup = BeautifulSoup(r.content, "html.parser") 

, ferner die erste Zeile Ihrer inneren/Sekunde for Schleife ein TypeError wirft, weil Sie indizieren etwas versuchen, das nicht subscriptable ist (Weil es keine Liste oder ähnliches ist, siehe zB here für weitere Details). Eigentlich ist es nicht einmal vorhanden - die Eigenschaft content, auf die Sie zugreifen wollen, ist None (was natürlich nicht subskriptierbar ist). Sie sollten lieber direkte Anrufe von find_all auf jedem der Elemente tun:

item.find_all(...) 
+0

Inb4 sinnlose Kommentare ohne konstruktive Kritik. :) – mxscho

+0

Wahrscheinlich weil 'html5lib' ein gültiger Parser ist, ist Ihre Antwort einfach falsch, der zweite Teil Ihrer Antwort ist auch falsch. –