Python - Coole Module #2: Beautiful Soup

in #deutsch7 years ago

PCMsvg.svg.png
Beautiful Soup ist eine Python-Bibliothek zum Extrahieren von Daten aus HTML- und XML-Dateien.
In diesem Post setze ich die Kenntnisse aus dem letzten Post voraus.


Installation

pip3 install bs4(Python 3)
pip install bs4 (Python 2)


Programm Teil 1

1 import requests
2 from bs4 import BeautifulSoup
3 import bs4
4 x = 'irgendwas'
5 get_parameters = {'q':x,'start':str(0)}
6 html = requests.get('https://www.google.de/search',get_parameters)
7 soup = BeautifulSoup(html.text,'lxml')

Zeile 1 - 6 sollten aus dem letzten Post bekannt sein.
In Zeile 7 wird der Rohe HTML-Code BeautifulSoup übergeben.


Programm Teil 2

In diesem Teil möchte ich den Code etwas durchsuchen.
Dazu öffnen ich Firefox, suche irgendwas und mache ein Rechtsklick auf ein Ergebnis.
Dann klicke ich auf Element untersuchen.
Firefox.png
So durchsuche ich die HTML-Code nach h3 und r und gbeb dies aus:

a  = soup.find_all('h3',class_='r')
print(a)

Output

[<h3 class="r"><a href="/url?q=https://www.duden.de/rechtschreibung/irgendwas&amp;sa=U&amp;ved=0ahUKEwic_6HwlrzZAhWJUlAKHSQtBPEQFghCMAk&amp;usg=AOvVaw0Qu6Z3pRCS9aGiN_Fa-0YG">Duden | <b>irgendwas</b> | Rechtschreibung, Bedeutung, Definition ...</a></h3>, <h3 class="r"><a href="/url?q=https://de.wiktionary.org/wiki/irgendwas&amp;sa=U&amp;ved=0ahUKEwic_6HwlrzZAhWJUlAKHSQtBPEQFghHMAo&amp;usg=AOvVaw137hKwKVhXgdfpULPWANUm"><b>irgendwas</b> – Wiktionary</a></h3>, <h3 class="r"><a href="/url?q=https://genius.com/Yvonne-catterfeld-irgendwas-lyrics&amp;sa=U&amp;ved=0ahUKEwic_6HwlrzZAhWJUlAKHSQtBPEQFghNMAs&amp;usg=AOvVaw2GvRCpNbkM9SF1cPnkcU3u">Yvonne Catterfeld – <b>Irgendwas</b> Lyrics | Genius Lyrics</a></h3>, <h3 class="r"><a href="/url?q=https://de.wikipedia.org/wiki/Irgendwas_(Lied)&amp;sa=U&amp;ved=0ahUKEwic_6HwlrzZAhWJUlAKHSQtBPEQFghUMAw&amp;usg=AOvVaw20Q2g9d1SWPGFfBOb3XJzx"><b>Irgendwas</b> (Lied) – Wikipedia</a></h3>, <h3 class="r"><a href="/url?q=https://www.openthesaurus.de/synonyme/irgendwas&amp;sa=U&amp;ved=0ahUKEwic_6HwlrzZAhWJUlAKHSQtBPEQFghaMA0&amp;usg=AOvVaw0scm347tY9ekFNxpdKuGAm"><b>irgendwas</b> - Synonyme bei OpenThesaurus</a></h3>, <h3 class="r"><a href="/url?q=https://de.pons.com/%25C3%25BCbersetzung/deutsch-spanisch/irgendwas&amp;sa=U&amp;ved=0ahUKEwic_6HwlrzZAhWJUlAKHSQtBPEQFghfMA4&amp;usg=AOvVaw20VMAp2ga8DeV3_JnIuPtB"><b>irgendwas</b> : Spanisch » Deutsch | PONS</a></h3>, <h3 class="r"><a href="/url?q=https://www.songtexte-lyrics.de/irgendwas-lyrics-yvonne-catterfeld/&amp;sa=U&amp;ved=0ahUKEwic_6HwlrzZAhWJUlAKHSQtBPEQFghlMA8&amp;usg=AOvVaw3HTqCYAHuh_I6a9dbjHYqh">Yvonne Catterfeld - <b>Irgendwas</b> Lyrics | Songtexte-Lyrics.de</a></h3>, <h3 class="r"><a href="/url?q=https://dict.leo.org/englisch-deutsch/irgendwas&amp;sa=U&amp;ved=0ahUKEwic_6HwlrzZAhWJUlAKHSQtBPEQFghrMBA&amp;usg=AOvVaw0LuBGQxL6OSHa2BRV3N9uq"><b>irgendwas</b> - LEO: Übersetzung im Englisch ⇔ Deutsch Wörterbuch</a></h3>, <h3 class="r"><a href="/url?q=https://www.amazon.de/Irgendwas/dp/B06W9JLWLF&amp;sa=U&amp;ved=0ahUKEwic_6HwlrzZAhWJUlAKHSQtBPEQFghwMBE&amp;usg=AOvVaw1wTSAJ0NknOke6fhQbx_Tp"><b>Irgendwas</b> von Yvonne Catterfeld feat. Bengio bei Amazon Music ...</a></h3>]

Dieser ist sehr unübersichtlich, also ändere ich das im nächsten Schritt.


Programm Teil 2

Den nun gefilterten Code übergeben wir wieder Beautiful Soup und geben den diesmal mit .prettify() aus.
Danach ist der code um einiges übersichtlicher.

soup2 = BeautifulSoup(str(a), 'html.parser')
print(soup2.prettify())

Output

[
<h3 class="r">
 <a href="/url?q=https://www.duden.de/rechtschreibung/irgendwas&amp;sa=U&amp;ved=0ahUKEwjcv4uwmrzZAhVDZFAKHaO_BEkQFghCMAk&amp;usg=AOvVaw3rFAgiGybSUZwell2r4xQq">
  Duden |
  <b>
   irgendwas
  </b>
  | Rechtschreibung, Bedeutung, Definition ...
 </a>
</h3>
,
<h3 class="r">
 <a href="/url?q=https://de.wiktionary.org/wiki/irgendwas&amp;sa=U&amp;ved=0ahUKEwjcv4uwmrzZAhVDZFAKHaO_BEkQFghHMAo&amp;usg=AOvVaw1CbnKaRH0DSoRTGWO6gFb3">
  <b>
   irgendwas
  </b>
  – Wiktionary
 </a>
</h3>
,
<h3 class="r">
 <a href="/url?q=https://genius.com/Yvonne-catterfeld-irgendwas-lyrics&amp;sa=U&amp;ved=0ahUKEwjcv4uwmrzZAhVDZFAKHaO_BEkQFghNMAs&amp;usg=AOvVaw0j5B0mSLRAhgrGlO5R11yQ">
  Yvonne Catterfeld –
  <b>
   Irgendwas
  </b>
  Lyrics | Genius Lyrics
 </a>
</h3>
,
<h3 class="r">
 <a href="/url?q=https://de.wikipedia.org/wiki/Irgendwas_(Lied)&amp;sa=U&amp;ved=0ahUKEwjcv4uwmrzZAhVDZFAKHaO_BEkQFghUMAw&amp;usg=AOvVaw2Y9NE0O2EgjX9T-hfVSrAj">
  <b>
   Irgendwas
  </b>
  (Lied) – Wikipedia
 </a>
</h3>
,
<h3 class="r">
 <a href="/url?q=https://www.openthesaurus.de/synonyme/irgendwas&amp;sa=U&amp;ved=0ahUKEwjcv4uwmrzZAhVDZFAKHaO_BEkQFghaMA0&amp;usg=AOvVaw3h5qpGtFOEdLCRj3GYDq6E">
  <b>
   irgendwas
  </b>
  - Synonyme bei OpenThesaurus
 </a>
</h3>
,
<h3 class="r">
 <a href="/url?q=https://de.pons.com/%25C3%25BCbersetzung/deutsch-spanisch/irgendwas&amp;sa=U&amp;ved=0ahUKEwjcv4uwmrzZAhVDZFAKHaO_BEkQFghfMA4&amp;usg=AOvVaw1YudEaYd7MCBX3ngPB7gY1">
  <b>
   irgendwas
  </b>
  : Spanisch » Deutsch | PONS
 </a>
</h3>
,
<h3 class="r">
 <a href="/url?q=https://www.songtexte-lyrics.de/irgendwas-lyrics-yvonne-catterfeld/&amp;sa=U&amp;ved=0ahUKEwjcv4uwmrzZAhVDZFAKHaO_BEkQFghlMA8&amp;usg=AOvVaw3etVcjfRya_uLJNRY4PsXC">
  Yvonne Catterfeld -
  <b>
   Irgendwas
  </b>
  Lyrics | Songtexte-Lyrics.de
 </a>
</h3>
,
<h3 class="r">
 <a href="/url?q=https://dict.leo.org/englisch-deutsch/irgendwas&amp;sa=U&amp;ved=0ahUKEwjcv4uwmrzZAhVDZFAKHaO_BEkQFghrMBA&amp;usg=AOvVaw2-Y6R1P-nNh3JdyfrN5GA5">
  <b>
   irgendwas
  </b>
  - LEO: Übersetzung im Englisch ⇔ Deutsch Wörterbuch
 </a>
</h3>
,
<h3 class="r">
 <a href="/url?q=https://www.amazon.de/Irgendwas/dp/B06W9JLWLF&amp;sa=U&amp;ved=0ahUKEwjcv4uwmrzZAhVDZFAKHaO_BEkQFghwMBE&amp;usg=AOvVaw05oV8zbHpec3MZhvCTrNJs">
  <b>
   Irgendwas
  </b>
  von Yvonne Catterfeld feat. Bengio bei Amazon Music ...
 </a>
</h3>
]

Kompletter Code

import requests
from bs4 import BeautifulSoup
import bs4
x = 'irgendwas'
get_parameters = {'q':x,'start':str(0)}
html = requests.get('https://www.google.de/search',get_parameters)
soup = BeautifulSoup(html.text,'lxml')
a  = soup.find_all('h3',class_='r')
print(a)
soup2 = BeautifulSoup(str(a), 'html.parser')
print(soup2.prettify())

Weitere informationen winden sie hier.