Ich versuche, den Text von einer Nachrichten-Website herunterzuladen. Der HTML-Code lautet:
<div class="pane-content">
<div class="field field-type-text field-field-noticia-bajada">
<div class="field-items">
<div class="field-item odd">
<p>"My Text" target="_blank">www.injuv.cl</a></strong></p> </div>
Die Ausgabe sollte lauten: Mein Text Ich verwende den folgenden Python-Code:
try:
from BeautifulSoup import BeautifulSoup
except ImportError:
from bs4 import BeautifulSoup
html = "My URL"
parsed_html = BeautifulSoup(html)
p = parsed_html.find("div", attrs={"class":"pane-content"})
print(p)
Die Ausgabe des Codes lautet jedoch: "Keine". Wissen Sie, was mit meinem Code falsch ist?
Antworten:
2 für die Antwort № 1Das Problem ist, dass Sie analysieren das HTML nicht, Sie analysieren die URL-Zeichenfolge:
html = "My URL"
parsed_html = BeautifulSoup(html)
Stattdessen musst du Holen Sie sich zuerst die Quelle, Beispiel in Python 2:
from urllib2 import urlopen
html = urlopen("My URL")
parsed_html = BeautifulSoup(html)
In Python 3 wäre dies:
from urllib.request import urlopen
html = urlopen("My URL")
parsed_html = BeautifulSoup(html)
Oder Sie können den Fremdanbieter-Stil "für Menschen" verwenden requests
Bibliothek:
import requests
html = requests.get("My URL").content
parsed_html = BeautifulSoup(html)
Beachten Sie auch, dass Sie nicht verwenden sollten BeautifulSoup
Version 3 überhaupt - es wird nicht mehr gewartet. Ersetzen:
try:
from BeautifulSoup import BeautifulSoup
except ImportError:
from bs4 import BeautifulSoup
nur mit:
from bs4 import BeautifulSoup
0 für die Antwort № 2
BeautifulSoup
akzeptiert eine HTML-Zeichenfolge. Sie müssen den HTML-Code mithilfe der URL von der Seite abrufen.
Auschecken urllib für HTTP-Anfragen. (Oder Anfragen für eine noch einfachere Art.) Rufen Sie das HTML ab und übergeben Sie es Das zu BeautifulSoup
so:
import urllib
from bs4 import BeautifulSoup
# Get the HTML
conn = urllib.urlopen("http://www.example.com")
html = conn.read()
# Give BeautifulSoup the HTML:
soup = BeautifulSoup(html)
Parsen Sie von hier aus, wie Sie es zuvor versucht haben.
p = soup.find("div", attrs={"class":"pane-content"})
print(p)