nachdem hier immer wieder die Frage nach Web Scraping bzw. einem HTML Paser gestellt wird und ich zu meiner Umsetzung in der Suche kein Ergebnis gefunden habe, möchte ich hier im Forum nicht nur Fragen stellen sondern auch mal ein Code Beispiel beitragen.
Ich habe ein Skript geschrieben, welches gestreamte Daten verarbeitet, dann ggf. eine Datei aus dem Internet lädt (z.B. von der SEC) und den Inhalt der Datei nach gewissen Textbausteinen durchsucht.
Am Anfang habe ich dafür BeautifulSoup genutzt, wie die meisten wahrscheinlich. Da Geschwindigkeit bei der Verarbeitung des Datenstroms wichtig ist, habe ich nach Möglichkeiten gesucht, das Web Scraping schneller zu machen.
Zuerst habe ich Beautifulsoup durch das Modul lxml ersetzt und das war schon etwas scheller. Dann bin ich irgendwann zufällig auf einen Artikel über "selectolax" gestossen und habe das ausprobiert, was wiederum schneller war.
Nachfolgend ein paar Zeilen Code, um eine Text-Datei einzulesen, die ganzen HTML und sonstige Tags rauszuschmeissen und den Text zum Durchsuchen mit z.B. regex vorzubereiten, d.h. alle unnützen Leerzeichen etc raus und alles ist lowercase.
Code: Alles auswählen
from selectolax.parser import HTMLParser
seclink = "https://www.sec.gov/Archives/edgar/data/.../000....txt"
useragent = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36'}
antwort = requests.get(seclink, headers=useragent)
text = HTMLParser(antwort.text).text()
text = " ".join(text.split()).lower()
Die github Seite für selectolax lautet: https://github.com/rushter/selectolax - dort gibt es auch weitere Beispiel für andere Anwendungsfälle.
Hier noch der Artikel in Englisch, der mich auf selectolax gebracht hat: https://www.mschweighauser.com/fast-url ... ith-python
Viel Erfolg bei Euren Projekten,
Andy