Fish Shell:
HTML parsen
Wie geht das:
Die Fish Shell ist vorwiegend nicht dafür ausgelegt, HTML direkt zu parsen. Sie zeichnet sich jedoch durch das Verknüpfen von Unix-Tools wie curl, grep, sed, awk aus oder durch die Verwendung von spezialisierten Tools wie pup oder beautifulsoup in einem Python-Skript. Unten sind Beispiele aufgeführt, die zeigen, wie diese Tools innerhalb der Fish Shell genutzt werden können, um HTML zu parsen.
Verwendung von curl und grep:
HTML-Inhalte abrufen und Zeilen extrahieren, die Links enthalten:
curl -s https://example.com | grep -oP '(?<=href=")[^"]*'Ausgabe:
/page1.html
/page2.html
...Verwendung von pup (ein Befehlszeilen-Tool zum Parsen von HTML):
Stellen Sie zunächst sicher, dass pup installiert ist. Dann können Sie es verwenden, um Elemente nach ihren Tags, IDs, Klassen usw. zu extrahieren.
curl -s https://example.com | pup 'a attr{href}'Die Ausgabe ähnelt dem grep-Beispiel und würde href-Attribute von <a>-Tags auflisten.
Mit einem Python-Skript und beautifulsoup:
Während die Fish-Shell an sich kein HTML nativ parsen kann, integriert sie sich nahtlos mit Python-Skripten. Unten ist ein prägnantes Beispiel, das Python mit BeautifulSoup verwendet, um Titel aus HTML zu parsen und zu extrahieren. Stellen Sie sicher, dass beautifulsoup4 und requests in Ihrer Python-Umgebung installiert sind.
parse_html.fish
function parse_html -a url
python -c "
import sys
import requests
from bs4 import BeautifulSoup
response = requests.get(sys.argv[1])
soup = BeautifulSoup(response.text, 'html.parser')
titles = soup.find_all('title')
for title in titles:
print(title.get_text())
" $url
endVerwendung:
parse_html 'https://example.com'Ausgabe:
Beispiel DomäneJede dieser Methoden dient verschiedenen Anwendungsfällen und Komplexitätsstufen, von einfacher Befehlszeilentextmanipulation bis zur vollen Parsing-Leistung von beautifulsoup in Python-Skripten. Je nach Ihren Bedürfnissen und der Komplexität der HTML-Struktur können Sie eine einfache Unix-Pipeline oder einen leistungsfähigeren Skripting-Ansatz wählen.