Ich gehe gerade durch den Web Scraping-Bereich von AutomateTheBoringStuff und versuche, ein Skript zu schreiben, das übersetzte Worte aus Google Translate mit BeautifulSoup4 extrahiert.BeautifulSoup4 mit Google Translate verwenden
besichtigte ich den HTML-Inhalt einer Seite, wo ‚Erklärung‘ das übersetzte Wort ist:
<span id="result_box" class="short_text" lang="en">
<span class>Explanation</span>
</span>
BeautifulSoup4 benutzen, habe ich versucht, verschiedene Selektoren, aber nichts, um das übersetzte Wort zurückkehren würde. Hier sind ein paar Beispiele, die ich versucht, aber sie kehren überhaupt keine Ergebnisse:
soup.select('span[id="result_box"] > span')
soup.select('span span')
Ich kopierte sogar die Wähler direkt von den Developer Tools, die gab mir #result_box> Spanne. Dies liefert wiederum keine Ergebnisse.
Kann mir jemand erklären, wie BeautifulSoup4 für meinen Zweck verwendet werden kann? Dies ist mein erstes Mal mit BeautifulSoup4 aber ich denke, ich bin mit BeautifulSoup mehr oder weniger korrekt, weil die Wähler
soup.select('span[id="result_box"]')
wird mir das äußere Element span **
[<span class="short_text" id="result_box"></span>]
** Nicht sicher, warum die ' leng = "en" 'Teil fehlt, aber ich bin mir ziemlich sicher, dass ich das richtige Element trotzdem gefunden habe.
ist der komplette Code:
import bs4, requests
url = 'https://translate.google.ca/#zh-CN/en/%E6%B2%BB%E5%85%B7'
res = requests.get(url)
res.raise_for_status
soup = bs4.BeautifulSoup(res.text, "html.parser")
translation = soup.select('#result_box span')
print(translation)
EDIT: Wenn ich die Google übersetzen als Offline-HTML-Datei speichern und dann aus dieser HTML-Datei eine Suppe Objekt macht, wäre es kein Problem, die Ortung sein Element.
import bs4
file = open("Google Translate.html")
soup = bs4.BeautifulSoup(file, "html.parser")
translation = soup.select('#result_box span')
print(translation)
unterstützt Ihr Code ist in Ordnung, das Problem ist dynamisch generierten Inhalt, die Übersetzung ist nicht verfügbar in der Quelle, die Sie zurück erhalten. –