/ / Eine News-Website crawlen und den News-Inhalt abrufen - Python, Beautifulsoup, HTML-Parser

Crawle eine Nachrichtenwebsite und erhalte den Nachrichteninhalt - python, beautifulsoup, html-parser

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 № 1

Das 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)