Added CSS syntax check.

git-svn-id: https://linkchecker.svn.sourceforge.net/svnroot/linkchecker/trunk/linkchecker@3719 e7d03fd6-7b0d-0410-9947-9c21f3af8025
This commit is contained in:
calvin 2008-04-24 09:44:18 +00:00
parent cce6affa17
commit 62efec3b35
18 changed files with 903 additions and 690 deletions

View file

@ -45,6 +45,12 @@
Type: feature
Changed: linkcheck/checker/internpaturl.py
* Added --check-html and --check-css options to enable HTML and CSS
syntax checking. Uses third-party modules "tidy" and "cssutils"
for the actual check.
Type: feature
Changed: linkchecker, linkcheck/checker/urlbase.py
4.8 "Hallam Foe" (released 16.12.2007)
* Fix message typo for not disclosing information.

2
TODO
View file

@ -13,8 +13,6 @@
- [FEATURE] Option to save/cache downloaded pages.
- [FEATURE] CSS syntax check
- [FEATURE] Virus check
- [FEATURE] Allow specifying proxy data in the web interface

View file

@ -132,6 +132,9 @@
#nntpserver=
# disable anchor caching
#noanchorcaching=1
# check HTML and/or CSS syntax
#checkhtml=1
#checkcss=1
# filtering options
[filtering]

View file

@ -1,5 +1,5 @@
po4a:
po4a --localized-charset=ISO-8859-15 po4a.conf
po4a --localized-charset=UTF-8 po4a.conf
apidocs:
epydoc --html -o api --name "LinkChecker source documentation" --url ../index.html ../linkcheck/

585
doc/de.po

File diff suppressed because it is too large Load diff

View file

@ -5,45 +5,45 @@
.\"*******************************************************************
.TH LINKCHECKER 1 2001\-03\-10 LinkChecker "LinkChecker auf der Kommandozeile"
.SH NAME
linkchecker \- prüfe HTML Dokumente auf ungültige Verknüpfungen
linkchecker \- prüfe HTML Dokumente auf ungültige Verknüpfungen
.
.SH SYNTAX
\fBlinkchecker\fP [\fIOptionen\fP] [\fIDatei\-oder\-URL\fP]...
.
.SH BESCHREIBUNG
.LP
LinkChecker bietet rekursives Prüfen, Multithreading, Ausgabe als farbigen
LinkChecker bietet rekursives Prüfen, Multithreading, Ausgabe als farbigen
oder normalen Text, HTML, SQL, CSV oder einen Sitemap\-Graphen in GML oder
XML, Unterstützung für HTTP/1.1, HTTPS, FTP, mailto:, news:, nntp:, Telnet
und lokale Dateiverknüpfungen, Einschränkung der Verknüpfungsüberprüfung mit
URL Filtern bestehend aus regulären Ausdrücken, Proxy Unterstützung,
Benutzer/Passwort Authentifizierung für HTTP und FTP, Unterstützung des
XML, Unterstützung für HTTP/1.1, HTTPS, FTP, mailto:, news:, nntp:, Telnet
und lokale Dateiverknüpfungen, Einschränkung der Verknüpfungsüberprüfung mit
URL Filtern bestehend aus regulären Ausdrücken, Proxy Unterstützung,
Benutzer/Passwort Authentifizierung für HTTP und FTP, Unterstützung des
robots.txt Protokolls, Mehrsprachigkeit, eine Kommandozeilenschnittstelle
sowie eine CGI Webschnittstelle (benötigt einen HTTP Server).
sowie eine CGI Webschnittstelle (benötigt einen HTTP Server).
.
.SH BEISPIELE
Der häufigste Gebrauchsfall prüft die angegebene Domäne rekursiv,
inklusive aller einzelnen nach außen zeigenden Verknüpfungen:
Der häufigste Gebrauchsfall prüft die angegebene Domäne rekursiv,
inklusive aller einzelnen nach außen zeigenden Verknüpfungen:
\fBlinkchecker http://treasure.calvinsplayground.de/\fP
.br
Beachten Sie dass dies die komplette Domäne überprüft, welche aus mehreren
Beachten Sie dass dies die komplette Domäne überprüft, welche aus mehreren
hunderttausend URLs bestehen kann. Benutzen Sie die Option \fB\-r\fP, um die
Rekursionstiefe zu beschränken.
Rekursionstiefe zu beschränken.
.br
Keine Verbindungen zu \fBmailto:\fP Rechnern, nur die URL Syntax wird geprüft. Alle
anderen Verknüpfungen werden wie üblich geprüft:
Keine Verbindungen zu \fBmailto:\fP Rechnern, nur die URL Syntax wird geprüft. Alle
anderen Verknüpfungen werden wie üblich geprüft:
\fBlinkchecker \-\-ignore\-url=^mailto: www.mysite.org\fP
.br
Überprüfung einer lokalen HTML Datei unter Unix:
Überprüfung einer lokalen HTML Datei unter Unix:
\fBlinkchecker ../bla.html\fP
.br
Überprüfung einer lokalen HTML Datei unter Windows:
Überprüfung einer lokalen HTML Datei unter Windows:
\fBlinkchecker c:\etemp\etest.html\fP
.br
Sie können den \fBhttp://\fP URL Anteil weglassen wenn die Domäne mit \fBwww.\fP beginnt:
Sie können den \fBhttp://\fP URL Anteil weglassen wenn die Domäne mit \fBwww.\fP beginnt:
\fBlinkchecker www.myhomepage.de\fP
.br
Sie können den \fBftp://\fP URL Anteil weglassen wenn die Domäne mit \fBftp.\fP beginnt:
Sie können den \fBftp://\fP URL Anteil weglassen wenn die Domäne mit \fBftp.\fP beginnt:
\fBlinkchecker \-r0 ftp.linux.org\fP
.br
Erzeuge einen Sitemap Graphen und konvertiere ihn mit dem graphviz dot Programm:
@ -53,10 +53,10 @@ Erzeuge einen Sitemap Graphen und konvertiere ihn mit dem graphviz dot Programm:
.SS "Allgemeine Optionen"
.TP
\fB\-h\fP, \fB\-\-help\fP
Hilfe! Gebe Gebrauchsanweisung für dieses Programm aus.
Hilfe! Gebe Gebrauchsanweisung für dieses Programm aus.
.TP
\fB\-f\fP\fIDATEINAME\fP, \fB\-\-config=\fP\fIDATEINAME\fP
Benutze \fIDATEINAME\fP als Konfigurationsdatei. Standardmäßig sucht
Benutze \fIDATEINAME\fP als Konfigurationsdatei. Standardmäßig sucht
LinkChecker zuerst nach \fB/etc/linkchecker/linkcheckerrc\fP und dann
\fB~/.linkchecker/linkcheckerrc\fP.
.TP
@ -69,44 +69,47 @@ von Threads ist 10. Um Threads zu deaktivieren, geben Sie eine nicht
positive Nummer an.
.TP
\fB\-\-priority\fP
Starte mit normaler Threadpriorität. Als Standard läuft LinkChecker mit
niedriger Threadpriorität, um als Hintergrundprozess geeignet zu sein.
Starte mit normaler Threadpriorität. Als Standard läuft LinkChecker mit
niedriger Threadpriorität, um als Hintergrundprozess geeignet zu sein.
.TP
\fB\-V\fP, \fB\-\-version\fP
Gebe die Version aus und beende das Programm.
.TP
\fB\-\-allow\-root\fP
Keine Entziehung der Priviligien, falls das Programm unter Unix als Benutzer
root läuft.
root läuft.
.
.SS Ausgabeoptionen
.TP
\fB\-v\fP, \fB\-\-verbose\fP
Gebe alle geprüften URLs aus. Standard ist es, nur fehlerhafte URLs und
Gebe alle geprüften URLs aus. Standard ist es, nur fehlerhafte URLs und
Warnungen auszugeben.
.TP
\fB\-\-no\-warnings\fP
Gebe keine Warnungen aus. Standard ist die Ausgabe von Warnungen.
.TP
\fB\-W\fP\fIREGEX\fP, \fB\-\-warning\-regex=\fP\fIREGEX\fP
Definieren Sie einen regulären Ausdruck der eine Warnung ausgibt falls er
auf den Inhalt einer geprüften URL zutrifft. Dies gilt nur für gültige
Seiten deren Inhalt wir bekommen können.
Definieren Sie einen regulären Ausdruck der eine Warnung ausgibt falls er
auf den Inhalt einer geprüften URL zutrifft. Dies gilt nur für gültige
Seiten deren Inhalt wir bekommen können.
.br
Benutzen Sie dies, um nach Seiten zu suchen, welche bestimmte Fehler
enthalten, zum Beispiel "Diese Seite wurde entfernt" oder "Oracle
Applikationsfehler".
.TP
\fB\-\-warning\-size\-bytes=\fP\fINUMMER\fP
Gebe eine Warnung aus, wenn die Inhaltsgröße bekannt ist und die angegebene
Anzahl von Bytes übersteigt.
Gebe eine Warnung aus, wenn die Inhaltsgröße bekannt ist und die angegebene
Anzahl von Bytes übersteigt.
.TP
\fB\-\-check\-html\fP
Prüfe HTML Syntax der aktuellen URL.
Prüfe Syntax von HTML URLs.
.TP
\fB\-\-check\-css\fP
Prüfe Syntax von CSS URLs.
.TP
\fB\-q\fP, \fB\-\-quiet\fP
Keine Ausgabe, ein Alias für \fB\-o none\fP. Dies ist nur in Verbindung mit
\fB\-F\fP nützlich.
Keine Ausgabe, ein Alias für \fB\-o none\fP. Dies ist nur in Verbindung mit
\fB\-F\fP nützlich.
.TP
\fB\-o\fP\fITYP\fP[\fB/\fP\fIENKODIERUNG\fP], \fB\-\-output=\fP\fITYP\fP[\fB/\fP\fIENKODIERUNG\fP]
Gib Ausgabetyp als \fBtext\fP, \fBhtml\fP, \fBsql\fP, \fBcsv\fP, \fBgml\fP, \fBdot\fP, \fBxml\fP,
@ -114,30 +117,30 @@ Gib Ausgabetyp als \fBtext\fP, \fBhtml\fP, \fBsql\fP, \fBcsv\fP, \fBgml\fP, \fBd
Ausgabetypen sind unten dokumentiert.
.br
Das \fIENCODING\fP gibt die Ausgabekodierung an. Der Standard ist das der
lokalen Spracheinstellung. Gültige Enkodierungen sind unter
lokalen Spracheinstellung. Gültige Enkodierungen sind unter
\fBhttp://docs.python.org/lib/standard\-encodings.html\fP aufgelistet.
.TP
\fB\-F\fP\fITYP\fP[\fB/\fP\fIENKODIERUNG\fP][\fB/\fP\fIDATEINAME\fP], \fB\-\-file\-output=\fP\fITYP\fP[\fB/\fP\fIENKODIERUNG\fP][\fB/\fP\fIDATEINAME\fP]
Ausgabe in eine Datei namens \fBlinkchecker\-out.\fP\fITYP\fP,
\fB$HOME/.linkchecker/blacklist\fP bei \fBblacklist\fP Ausgabe, oder \fIDATEINAME\fP
falls angegeben. Der \fIDATEINAME\fP und \fIENKODIERUNG\fP Teil wird beim
Ausgabetyp \fBnone\fP ignoriert, ansonsten wird die Datei überschreiben falls
sie existiert. Sie können diese Option mehr als einmal verwenden. Gültige
Ausgabetyp \fBnone\fP ignoriert, ansonsten wird die Datei überschreiben falls
sie existiert. Sie können diese Option mehr als einmal verwenden. Gültige
Ausgabetypen sind \fBtext\fP, \fBhtml\fP, \fBsql\fP, \fBcsv\fP, \fBgml\fP, \fBdot\fP, \fBxml\fP,
\fBnone\fP oder \fBblacklist\fP. Standard ist keine Dateiausgabe. \fIENKODIERUNG\fP
gibt die Ausgabekodierung an,der Standard ist die Enkodierung der
ausgewählten Spracheinstellung. Gültige Enkodierungen sind unter
ausgewählten Spracheinstellung. Gültige Enkodierungen sind unter
\fBhttp://docs.python.org/lib/standard\-encodings.html\fP aufgelistet. Beachten
Sie, dass Sie mit der Option \fB\-o none\fP jegliche Ausgaben auf der Konsole
verhindern können.
verhindern können.
.TP
\fB\-\-no\-status\fP
Gebe keine Statusmeldungen aus.
.TP
\fB\-D\fP\fINAME\fP, \fB\-\-debug=\fP\fINAME\fP
Gebe Testmeldungen aus für den angegebenen Logger. Verfügbare Logger sind
Gebe Testmeldungen aus für den angegebenen Logger. Verfügbare Logger sind
\fBcmdline\fP, \fBchecking\fP,\fBcache\fP, \fBgui\fP, \fBdns\fP und \fBall\fP. Die Angabe
\fBall\fP ist ein Synonym für alle verfügbaren Logger. Diese Option kann
\fBall\fP ist ein Synonym für alle verfügbaren Logger. Diese Option kann
mehrmals angegeben werden, um mit mehr als einem Logger zu testen. Um
akkurate Ergebnisse zu erzielen, werden Threads deaktiviert.
.TP
@ -151,56 +154,56 @@ aktuellen Arbeitsverzeichnis. Siehe auch \fB\-\-viewprof\fP.
\fB\-\-viewprof\fP
Gebe vorher generierte Profiling\-Daten aus. Siehe auch \fB\-\-profile\fP.
.
.SS "Optionen zum Prüfen"
.SS "Optionen zum Prüfen"
.TP
\fB\-r\fP\fINUMMER\fP, \fB\-\-recursion\-level=\fP\fINUMMER\fP
Prüfe rekursiv alle URLs bis zu der angegebenen Tiefe. Eine negative Tiefe
Prüfe rekursiv alle URLs bis zu der angegebenen Tiefe. Eine negative Tiefe
bewirkt unendliche Rekursion. Standard Tiefe ist unendlich.
.TP
\fB\-\-no\-follow\-url=\fP\fIREGEX\fP
Prüfe URLs, welche dem angegebenen regulären Ausdruck entsprechen, aber
führe keine Rekursion durch.
Prüfe URLs, welche dem angegebenen regulären Ausdruck entsprechen, aber
führe keine Rekursion durch.
.br
Diese Option kann mehrmals angegeben werden.
.TP
\fB\-\-ignore\-url=\fP\fIREGEX\fP
Prüfe lediglich die Syntax von URLs, welche dem angegebenen regulären
Prüfe lediglich die Syntax von URLs, welche dem angegebenen regulären
Ausdruck entsprechen.
.br
Diese Option kann mehrmals angegeben werden.
.TP
\fB\-C\fP, \fB\-\-cookies\fP
Akzeptiere und sende HTTP Cookies nach der RFC 2109. Lediglich Cookies, die
zum ursprünglichen Server zurückgesendet werden, werden akzeptiert.
Gesendete und akzeptierte Cookies werden als zusätzlicheLoginformation
aufgeführt.
zum ursprünglichen Server zurückgesendet werden, werden akzeptiert.
Gesendete und akzeptierte Cookies werden als zusätzlicheLoginformation
aufgeführt.
.TP
\fB\-\-cookiefile=\fP\fIDATEINAME\fP
Lese eine Datei mit Cookie\-Daten. Das Cookie Datenformat wird weiter unten
erklärt.
erklärt.
.TP
\fB\-a\fP, \fB\-\-anchors\fP
Prüfe HTTP Ankerverweise. Standard ist, Ankerverweise nicht zu prüfen. Diese
Prüfe HTTP Ankerverweise. Standard ist, Ankerverweise nicht zu prüfen. Diese
Option aktiviert die Ausgabe der Warnung \fBurl\-anchor\-not\-found\fP.
.TP
\fB\-\-no\-anchor\-caching\fP
Behandle url#anchora und url#anchorb beim Cachen als gleich. Dies ist zwar
Standard bei Browsern, aber in der URI Spezifikation nicht
enthalten. Benutzen Sie diese Option mit Vorsicht da ungültige Anker mit
enthalten. Benutzen Sie diese Option mit Vorsicht da ungültige Anker mit
dieser Option nicht unbedingt erkannt werden.
.TP
\fB\-u\fP\fINAME\fP, \fB\-\-user=\fP\fINAME\fP
Verwende den angegebenen Benutzernamen für HTTP und FTP Autorisierung. Für
FTP ist der Standardname \fBanonymous\fP. Für HTTP gibt es keinen
Verwende den angegebenen Benutzernamen für HTTP und FTP Autorisierung. Für
FTP ist der Standardname \fBanonymous\fP. Für HTTP gibt es keinen
Standardnamen. Siehe auch \fB\-p\fP.
.TP
\fB\-p\fP\fINAME\fP, \fB\-\-password=\fP\fINAME\fP
Verwende das angegebene Passwort für HTTP und FTP Autorisierung. Für FTP ist
das Standardpasswort \fBanonymous@\fP. Für HTTP gibt es kein
Verwende das angegebene Passwort für HTTP und FTP Autorisierung. Für FTP ist
das Standardpasswort \fBanonymous@\fP. Für HTTP gibt es kein
Standardpasswort. Siehe auch \fB\-u\fP.
.TP
\fB\-\-timeout=\fP\fINUMMER\fP
Setze den Timeout für TCP\-Verbindungen in Sekunden. Der Standard Timeout ist
Setze den Timeout für TCP\-Verbindungen in Sekunden. Der Standard Timeout ist
60 Sekunden.
.TP
\fB\-P\fP\fINUMMER\fP, \fB\-\-pause=\fP\fINUMMER\fP
@ -209,90 +212,90 @@ folgenden Verbindungen zum demselben Rechner. Standard ist keine Pause
zwischen Verbindungen.
.TP
\fB\-N\fP\fINAME\fP, \fB\-\-nntp\-server=\fP\fINAME\fP
Gibt ein NNTP Rechner für \fBnews:\fP Links. Standard ist die Umgebungsvariable
Gibt ein NNTP Rechner für \fBnews:\fP Links. Standard ist die Umgebungsvariable
\fBNNTP_SERVER\fP. Falls kein Rechner angegeben ist, wird lediglich auf
korrekte Syntax des Links geprüft.
korrekte Syntax des Links geprüft.
.TP
\fB\-\-no\-proxy\-for=\fP\fIREGEX\fP
Rechner welche dem angegebenen regulären Ausdruck entsprechen sollen direkt
und nicht über einen Proxy angesprochen werden.
Rechner welche dem angegebenen regulären Ausdruck entsprechen sollen direkt
und nicht über einen Proxy angesprochen werden.
.br
Diese Option kann mehrmals angegeben werden.
.SH KONFIGURATIONSDATEIEN
Konfigurationsdateien können alle obigen Optionen enthalten. Sie können
Konfigurationsdateien können alle obigen Optionen enthalten. Sie können
zudem Optionen enthalten, welche nicht auf der Kommandozeile gesetzt werden
können. Siehe \fBlinkcheckerrc\fP(5) für mehr Informationen.
können. Siehe \fBlinkcheckerrc\fP(5) für mehr Informationen.
.SH AUSGABETYPEN
Beachten Sie, dass standardmäßig nur Fehler und Warnungen protokolliert
Beachten Sie, dass standardmäßig nur Fehler und Warnungen protokolliert
werden. Sie sollten die \fB\-\-verbose\fP Option benutzen, um eine komplette URL
Liste zu erhalten, besonders bei Ausgabe eines Sitemap\-Graphen.
.TP
\fBtext\fP
Standard Textausgabe in "Schlüssel: Wert"\-Form.
Standard Textausgabe in "Schlüssel: Wert"\-Form.
.TP
\fBhtml\fP
Gebe URLs in "Schlüssel: Wert"\-Form als HTML formatiert aus. Besitzt zudem
Verknüpfungen auf die referenzierten Seiten. Ungültige URLs haben
Verknüpfungen zur HTML und CSS Syntaxprüfung angehängt.
Gebe URLs in "Schlüssel: Wert"\-Form als HTML formatiert aus. Besitzt zudem
Verknüpfungen auf die referenzierten Seiten. Ungültige URLs haben
Verknüpfungen zur HTML und CSS Syntaxprüfung angehängt.
.TP
\fBcsv\fP
Gebe Prüfresultat in CSV\-Format aus mit einer URL pro Zeile.
Gebe Prüfresultat in CSV\-Format aus mit einer URL pro Zeile.
.TP
\fBgml\fP
Gebe Vater\-Kind Beziehungen zwischen verknüpften URLs als GML Graphen aus.
Gebe Vater\-Kind Beziehungen zwischen verknüpften URLs als GML Graphen aus.
.TP
\fBdot\fP
Gebe Vater\-Kind Beziehungen zwischen verknüpften URLs als DOT Graphen aus.
Gebe Vater\-Kind Beziehungen zwischen verknüpften URLs als DOT Graphen aus.
.TP
\fBgxml\fP
Gebe Prüfresultat als GraphXML\-Datei aus.
Gebe Prüfresultat als GraphXML\-Datei aus.
.TP
\fBxml\fP
Gebe Prüfresultat als maschinenlesbare XML\-Datei aus.
Gebe Prüfresultat als maschinenlesbare XML\-Datei aus.
.TP
\fBsql\fP
Gebe Prüfresultat als SQL Skript mit INSERT Befehlen aus. Ein
Gebe Prüfresultat als SQL Skript mit INSERT Befehlen aus. Ein
Beispielskript, um die initiale SQL Tabelle zu erstellen ist unter
create.sql zu finden.
.TP
\fBblacklist\fP
Für Cronjobs geeignet. Gibt das Prüfergebnis in eine Datei
\fB~/.linkchecker/blacklist\fP aus, welche nur Einträge mit fehlerhaften URLs
und die Anzahl der Fehlversuche enthält.
Für Cronjobs geeignet. Gibt das Prüfergebnis in eine Datei
\fB~/.linkchecker/blacklist\fP aus, welche nur Einträge mit fehlerhaften URLs
und die Anzahl der Fehlversuche enthält.
.TP
\fBnone\fP
Gibt nichts aus. Für Debugging oder Prüfen des Rückgabewerts geeignet.
Gibt nichts aus. Für Debugging oder Prüfen des Rückgabewerts geeignet.
.
.SH "REGULÄRE AUSDRÜCKE"
Lediglich Pythons reguläre Ausdrücke werden von LinkChecker
akzeptiert. Siehe \fBhttp://www.amk.ca/python/howto/regex/\fP für eine
Einführung in reguläre Ausdrücke.
.SH "REGULÄRE AUSDRÜCKE"
Lediglich Pythons reguläre Ausdrücke werden von LinkChecker
akzeptiert. Siehe \fBhttp://www.amk.ca/python/howto/regex/\fP für eine
Einführung in reguläre Ausdrücke.
Die einzige Hinzufügung ist, dass ein regulärer Ausdruck negiert wird falls
Die einzige Hinzufügung ist, dass ein regulärer Ausdruck negiert wird falls
er mit einem Ausrufezeichen beginnt.
.
.SH COOKIE\-DATEIEN
Eine Cookie\-Datei enthält Standard RFC 805 Kopfdaten mit den folgenden
möglichen Namen:
Eine Cookie\-Datei enthält Standard RFC 805 Kopfdaten mit den folgenden
möglichen Namen:
.
.TP
\fBScheme\fP (optional)
Setzt das Schema für das die Cookies gültig sind; Standardschema ist
Setzt das Schema für das die Cookies gültig sind; Standardschema ist
\fBhttp\fP.
.TP
\fBHost\fP (erforderlich)
Setzt die Domäne für die die Cookies gültig sind.
Setzt die Domäne für die die Cookies gültig sind.
.TP
\fBPath\fP (optional)
Gibt den Pfad für den die Cookies gültig sind; Standardpfad ist \fB/\fP.
Gibt den Pfad für den die Cookies gültig sind; Standardpfad ist \fB/\fP.
.TP
\fBSet\-cookie\fP (optional)
Setzt den Cookie Name/Wert. Kann mehrmals angegeben werden.
.PP
Mehrere Einträge sind durch eine Leerzeile zu trennen.
Mehrere Einträge sind durch eine Leerzeile zu trennen.
.
Das untige Beispiel sendet zwei Cookies zu allen URLs die mit
\fBhttp://example.org/hello/\fP beginnen, und eins zu allen URLs die mit
@ -307,7 +310,7 @@ Das untige Beispiel sendet zwei Cookies zu allen URLs die mit
Host: example.org
Set\-cookie: baggage="elitist"; comment="hologram"
.SH "PROXY UNTERSTÜTZUNG"
.SH "PROXY UNTERSTÜTZUNG"
Um einen Proxy zu benutzen, setzen Sie $http_proxy, $https_proxy, $ftp_proxy
unter Unix oder Windows auf die Proxy URL. Die URL sollte die Form
\fBhttp://\fP[\fIuser\fP\fB:\fP\fIpass\fP\fB@\fP]\fIhost\fP[\fB:\fP\fIport\fP] besitzen, zum
@ -316,23 +319,23 @@ einem Mac benutzen Sie die Internet Konfiguration.
.
.SH BEMERKUNGEN
URLs von der Kommandozeile die mit \fBftp.\fP beginnen werden wie \fBftp://ftp.\fP
behandelt, URLs die mit \fBwww.\fP beginnen wie \fBhttp://www.\fP. Sie können auch
behandelt, URLs die mit \fBwww.\fP beginnen wie \fBhttp://www.\fP. Sie können auch
lokale Dateien angeben.
Falls sich Ihr System automatisch mit dem Internet verbindet (z.B. mit
diald), wird es dies tun wenn Sie Links prüfen, die nicht auf Ihren lokalen
diald), wird es dies tun wenn Sie Links prüfen, die nicht auf Ihren lokalen
Rechner verweisen Benutzen Sie die Optionen \fB\-s\fP und \fB\-i\fP, um dies zu
verhindern.
Javascript Links werden zur Zeit ignoriert.
Wenn Ihr System keine Threads unterstützt, deaktiviert diese LinkChecker
Wenn Ihr System keine Threads unterstützt, deaktiviert diese LinkChecker
automatisch.
Sie können mehrere Benutzer/Passwort Paare in einer Konfigurationsdatei
Sie können mehrere Benutzer/Passwort Paare in einer Konfigurationsdatei
angeben.
Beim Prüfen von \fBnews:\fP Links muß der angegebene NNTP Rechner nicht
Beim Prüfen von \fBnews:\fP Links muß der angegebene NNTP Rechner nicht
unbedingt derselbe wie der des Benutzers sein.
.
.SH UMGEBUNG
@ -344,10 +347,10 @@ unbedingt derselbe wie der des Benutzers sein.
.br
\fBLC_MESSAGES\fP, \fBLANG\fP, \fBLANGUAGE\fP \- gibt Ausgabesprache an
.
.SH RÜCKGABEWERT
Der Rückgabewert ist nicht Null falls
.SH RÜCKGABEWERT
Der Rückgabewert ist nicht Null falls
.IP \(bu
ungültige Verknüpfungen gefunden wurden oder
ungültige Verknüpfungen gefunden wurden oder
.IP \(bu
Warnungen gefunden wurden und Warnungen aktiviert sind
.IP \(bu
@ -362,11 +365,11 @@ Ausgabe
.br
\fBlinkchecker\-out.\fP\fITYP\fP \- Standard Dateiname der Logausgabe
.br
\fBhttp://docs.python.org/lib/standard\-encodings.html\fP \- gültige Ausgabe
\fBhttp://docs.python.org/lib/standard\-encodings.html\fP \- gültige Ausgabe
Enkodierungen
.br
\fBhttp://www.amk.ca/python/howto/regex/\fP \- Dokumentation zu regulären
Ausdrücken
\fBhttp://www.amk.ca/python/howto/regex/\fP \- Dokumentation zu regulären
Ausdrücken
.SH "SIEHE AUCH"
\fBlinkcheckerrc\fP(5)

View file

@ -5,7 +5,7 @@
.\"*******************************************************************
.TH linkcheckerrc 5 2007\-11\-30 LinkChecker
.SH NAME
linkcheckerrc \- Konfigurationsdatei für LinkChecker
linkcheckerrc \- Konfigurationsdatei für LinkChecker
.
.SH BESCHREIBUNG
\fBlinkcheckerrc\fP ist die Standardkonfigurationsdatei von LinkChecker. Die
@ -23,27 +23,27 @@ positive Nummer an.
Kommandozeilenoption: \fB\-\-threads\fP
.TP
\fBtimeout=\fP\fINUMMER\fP
Setze den Timeout für TCP\-Verbindungen in Sekunden. Der Standard Timeout ist
Setze den Timeout für TCP\-Verbindungen in Sekunden. Der Standard Timeout ist
60 Sekunden.
.br
Kommandozeilenoption: \fB\-\-timeout\fP
.TP
\fBanchors=\fP[\fB0\fP|\fB1\fP]
Prüfe HTTP Ankerverweise. Standard ist, Ankerverweise nicht zu prüfen. Diese
Prüfe HTTP Ankerverweise. Standard ist, Ankerverweise nicht zu prüfen. Diese
Option aktiviert die Ausgabe der Warnung \fBurl\-anchor\-not\-found\fP.
.br
Kommandozeilenoption: \fB\-\-anchors\fP
.TP
\fBrecursionlevel=\fP\fINUMBER\fP
Prüfe rekursiv alle URLs bis zu der angegebenen Tiefe. Eine negative Tiefe
Prüfe rekursiv alle URLs bis zu der angegebenen Tiefe. Eine negative Tiefe
bewirkt unendliche Rekursion. Standard Tiefe ist unendlich.
.br
Kommandozeilenoption: \fB\-\-recursion\-level\fP
.TP
\fBwarningregex=\fP=\fIREGEX\fP
Definieren Sie einen regulären Ausdruck der eine Warnung ausgibt falls er
auf den Inhalt einer geprüften URL zutrifft. Dies gilt nur für gültige
Seiten deren Inhalt wir bekommen können.
Definieren Sie einen regulären Ausdruck der eine Warnung ausgibt falls er
auf den Inhalt einer geprüften URL zutrifft. Dies gilt nur für gültige
Seiten deren Inhalt wir bekommen können.
.br
Benutzen Sie dies, um nach Seiten zu suchen, welche bestimmte Fehler
enthalten, zum Beispiel "Diese Seite wurde entfernt" oder "Oracle
@ -52,68 +52,78 @@ Applikationsfehler".
Kommandozeilenoption: \fB\-\-warning\-regex\fP
.TP
\fBwarnsizebytes=\fP\fINUMBER\fP
Gebe eine Warnung aus, wenn die Inhaltsgröße bekannt ist und die angegebene
Anzahl von Bytes übersteigt.
Gebe eine Warnung aus, wenn die Inhaltsgröße bekannt ist und die angegebene
Anzahl von Bytes übersteigt.
.br
Kommandozeilenoption: \fB\-\-warning\-size\-bytes\fP
.TP
\fBnntpserver=\fP\fISTRING\fP
Gibt ein NNTP Rechner für \fBnews:\fP Links. Standard ist die Umgebungsvariable
Gibt ein NNTP Rechner für \fBnews:\fP Links. Standard ist die Umgebungsvariable
\fBNNTP_SERVER\fP. Falls kein Rechner angegeben ist, wird lediglich auf
korrekte Syntax des Links geprüft.
korrekte Syntax des Links geprüft.
.br
Kommandozeilenoption: \fB\-\-nntp\-server\fP
.TP
\fBanchorcaching=\fP[\fB0\fP|\fB1\fP]
Falls auf Null gesetzt, behandle url#anchora und url#anchorb beim Cachen als
gleich. Dies ist zwar Standard bei Browsern, aber in der URI Spezifikation
nicht enthalten. Benutzen Sie diese Option mit Vorsicht da ungültige Anker
nicht enthalten. Benutzen Sie diese Option mit Vorsicht da ungültige Anker
mit dieser Option nicht unbedingt erkannt werden.
.br
Kommandozeilenoption: \fB\-\-no\-anchor\-caching\fP
.TP
\fBcheckhtml=\fP[\fB0\fP|\fB1\fP]
Prüfe Syntax von HTML URLs.
.br
Kommandozeilenoption: \fB\-\-check\-html\fP
.TP
\fBcheckcss=\fP[\fB0\fP|\fB1\fP]
Prüfe Syntax von CSS URLs.
.br
Kommandozeilenoption: \fB\-\-check\-css\fP
.SS [filtering]
.TP
\fBignore=\fP\fIREGEX\fP (MULTILINE)
Prüfe lediglich die Syntax von URLs, welche dem angegebenen regulären
Prüfe lediglich die Syntax von URLs, welche dem angegebenen regulären
Ausdruck entsprechen.
.br
Kommandozeilenoption: \fB\-\-ignore\-url\fP
.TP
\fBnofollow=\fP\fIREGEX\fP (MULTILINE)
Prüfe URLs die auf den regulären Ausdruck zutreffen, aber führe keine
Prüfe URLs die auf den regulären Ausdruck zutreffen, aber führe keine
Rekursion durch.
.br
Kommandozeilenoption: \fB\-\-no\-follow\-url\fP
.TP
\fBnoproxyfor=\fP\fIREGEX\fP (MULTILINE)
Rechner welche dem angegebenen regulären Ausdruck entsprechen sollen direkt
und nicht über einen Proxy angesprochen werden.
Rechner welche dem angegebenen regulären Ausdruck entsprechen sollen direkt
und nicht über einen Proxy angesprochen werden.
.br
Kommandozeilenoption: \fB\-\-no\-proxy\-for\fP
.TP
\fBignorewarnings=\fP\fINAME\fP[\fB,\fP\fINAME\fP...]
Ignoriere die kommagetrennte Liste von Warnungen. Siehe \fBlinkchecker \-h\fP
für die Liste von erkannten Warnungen.
für die Liste von erkannten Warnungen.
.br
Kommandozeilenoption: keine
.TP
\fBinternlinks=\fP\fIREGEX\fP
Regulärer Ausdruck, um mehr URLs als interne Verknüpfungen
hinzuzufügen. Standard ist dass URLs der Kommandozeile als intern gelten.
Regulärer Ausdruck, um mehr URLs als interne Verknüpfungen
hinzuzufügen. Standard ist dass URLs der Kommandozeile als intern gelten.
.br
Kommandozeilenoption: keine
.SS [authentication]
.TP
\fBentry=\fP\fIREGEX\fP \fIUSER\fP \fIPASS\fP (MULTILINE)
Erstelle verschiedene Benutzer/Passwort Parre für verschiedene
Verknüpfungsarten. Einträge sind ein Tripel (Verknüpfung regulärer Ausdruck,
Erstelle verschiedene Benutzer/Passwort Parre für verschiedene
Verknüpfungsarten. Einträge sind ein Tripel (Verknüpfung regulärer Ausdruck,
Benutzername, Passwort), getrennt durch Leerzeichen.
.br
Falls der reguläre Ausdruck zutrifft, wird das angegebene Benutzer/Passwort
Falls der reguläre Ausdruck zutrifft, wird das angegebene Benutzer/Passwort
Paar zum Authentifizieren genutzt. Die Kommandozeilenoptionen \fB\-u\fP und
\fB\-p\fP treffen auf jede Verknüpfung zu und überschreiben daher die Einträge
hier. Der erste Treffer gewinnt. Im Moment wird Authentifizierung für
http[s] und ftp Verknüpfungen benutzt.
\fB\-p\fP treffen auf jede Verknüpfung zu und überschreiben daher die Einträge
hier. Der erste Treffer gewinnt. Im Moment wird Authentifizierung für
http[s] und ftp Verknüpfungen benutzt.
.br
Kommandozeilenoption: \fB\-u\fP, \fB\-p\fP
.SS [output]
@ -124,9 +134,9 @@ Frage nach URLs, falls keine auf der Kommandozeile eingegeben wurden.
Kommandozeilenoption: \fB\-\-interactive\fP
.TP
\fBdebug=\fP\fISTRING\fP[\fB,\fP\fISTRING\fP...]
Gebe Testmeldungen aus für den angegebenen Logger. Verfügbare Logger sind
Gebe Testmeldungen aus für den angegebenen Logger. Verfügbare Logger sind
\fBcmdline\fP, \fBchecking\fP,\fBcache\fP, \fBgui\fP, \fBdns\fP, \fBthread\fP und \fBall\fP. Die
Angabe \fBall\fP ist ein Synonym für alle verfügbaren Logger.
Angabe \fBall\fP ist ein Synonym für alle verfügbaren Logger.
.br
[output]
.TP
@ -141,13 +151,13 @@ Gib Ausgabetyp als \fBtext\fP, \fBhtml\fP, \fBsql\fP, \fBcsv\fP, \fBgml\fP, \fBd
Ausgabetypen sind unten dokumentiert.
.br
Das \fIENCODING\fP gibt die Ausgabekodierung an. Der Standard ist das der
lokalen Spracheinstellung. Gültige Enkodierungen sind unter
lokalen Spracheinstellung. Gültige Enkodierungen sind unter
\fBhttp://docs.python.org/lib/standard\-encodings.html\fP aufgelistet.
.br
Kommandozeilenoption: \fB\-\-output\fP
.TP
\fBverbose=\fP[\fB0\fP|\fB1\fP]
Falls gesetzt, gebe alle geprüften URLs aus. Standard ist es, nur
Falls gesetzt, gebe alle geprüften URLs aus. Standard ist es, nur
fehlerhafte URLs und Warnungen auszugeben.
.br
Kommandozeilenoption: \fB\-\-verbose\fP
@ -159,25 +169,25 @@ Warnungen.
Kommandozeilenoption: \fB\-\-no\-warnings\fP
.TP
\fBquiet=\fP[\fB0\fP|\fB1\fP]
Falls gesetzt, erfolgt keine Ausgabe. Ein Alias für \fBlog=none\fP. Dies ist
nur in Verbindung mit \fBfileoutput\fP nützlich.
Falls gesetzt, erfolgt keine Ausgabe. Ein Alias für \fBlog=none\fP. Dies ist
nur in Verbindung mit \fBfileoutput\fP nützlich.
.br
Kommandozeilenoption: \fB\-\-verbose\fP
.TP
\fBfileoutput=\fP\fITYPE\fP[\fB,\fP\fITYPE\fP...]
Ausgabe in Datei \fBlinkchecker\-out.\fP\fITYPE\fP, \fB$HOME/.linkchecker/blacklist\fP
für \fBblacklist\fP Ausgabe.
für \fBblacklist\fP Ausgabe.
.br
Gültige Ausgabearten sind \fBtext\fP, \fBhtml\fP, \fBsql\fP, \fBcsv\fP, \fBgml\fP, \fBdot\fP,
Gültige Ausgabearten sind \fBtext\fP, \fBhtml\fP, \fBsql\fP, \fBcsv\fP, \fBgml\fP, \fBdot\fP,
\fBxml\fP, \fBnone\fP oder \fBblacklist\fP Standard ist keine Dateiausgabe. Die
verschiedenen Ausgabearten sind unten dokumentiert. Bemerke, dass man alle
Konsolenausgaben mit \fBoutput=none\fP unterdrücken kann.
Konsolenausgaben mit \fBoutput=none\fP unterdrücken kann.
.br
Kommandozeilenoption: \fB\-\-file\-output\fP
.SS [text]
.TP
\fBfilename=\fP\fISTRING\fP
Gebe Dateiname für Textausgabe an. Standard Dateiname ist
Gebe Dateiname für Textausgabe an. Standard Dateiname ist
\fBlinkchecker\-out.txt\fP.
.br
Kommandozeilenoption: \fB\-\-file\-output=\fP
@ -189,11 +199,11 @@ Kommagetrennte Liste von Teilen, die ausgegeben werden sollen. Siehe
Kommandozeilenoption: keine
.TP
\fBencoding=\fP\fISTRING\fP
Gültige Enkodierungen sind unter \fBhttp://docs.python.org/lib/node127.html\fP
Gültige Enkodierungen sind unter \fBhttp://docs.python.org/lib/node127.html\fP
aufgelistet. Standard Enkodierung ist \fBiso\-8859\-15\fP.
.TP
\fIcolor*\fP
Farbwerte für die verschiedenen Ausgabeteile. Syntax ist \fIcolor\fP oder
Farbwerte für die verschiedenen Ausgabeteile. Syntax ist \fIcolor\fP oder
\fItype\fP\fB;\fP\fIcolor\fP. Der \fItype\fP kann \fBbold\fP, \fBlight\fP, \fBblink\fP oder
\fBinvert\fP sein. Die \fIcolor\fP kann \fBdefault\fP, \fBblack\fP, \fBred\fP, \fBgreen\fP,
\fByellow\fP, \fBblue\fP, \fBpurple\fP, \fBcyan\fP, \fBwhite\fP, \fBBlack\fP, \fBRed\fP,
@ -211,16 +221,16 @@ Setze URL Farbe. Standard ist \fBdefault\fP.
Kommandozeilenoption: \fB\-\-file\-output=\fP
.TP
\fBcolorreal=\fP\fISTRING\fP
Setze Farbe für tatsächliche URL. Default ist \fBcyan\fP.
Setze Farbe für tatsächliche URL. Default ist \fBcyan\fP.
.TP
\fBcolorbase=\fP\fISTRING\fP
Setzt Basisurl Farbe. Standard ist \fBpurple\fP.
.TP
\fBcolorvalid=\fP\fISTRING\fP
Setze gültige Farbe. Standard ist \fBbold;green\fP.
Setze gültige Farbe. Standard ist \fBbold;green\fP.
.TP
\fBcolorinvalid=\fP\fISTRING\fP
Setze ungültige Farbe. Standard ist \fBbold;red\fP.
Setze ungültige Farbe. Standard ist \fBbold;red\fP.
.TP
\fBcolorinfo=\fP\fISTRING\fP
Setzt Informationsfarbe. Standard ist \fBdefault\fP.
@ -268,7 +278,7 @@ Siehe [text] Sektion weiter oben.
Das CSV Trennzeichen. Standard ist Komma (\fB,\fP).
.TP
\fBquotechar=\fP\fICHAR\fP
Setze CSV Quotezeichen. Standard ist das doppelte Anführungszeichen (\fB"\fP).
Setze CSV Quotezeichen. Standard ist das doppelte Anführungszeichen (\fB"\fP).
.SS [sql]
.TP
\fBfilename=\fP\fISTRING\fP
@ -306,7 +316,7 @@ Setze HTML URL Farbe. Standard ist \fB#dcd5cf\fP.
Setze HTML Rahmenfarbe. Standard ist \fB#000000\fP.
.TP
\fBcolorlink=\fP
Setze HTML Verknüpfungsfarbe. Standard ist \fB#191c83\fP.
Setze HTML Verknüpfungsfarbe. Standard ist \fB#191c83\fP.
.TP
\fBcolorwarning=\fP
Setze HTML Warnfarbe. Standard ist \fB#e0954e\fP.
@ -315,7 +325,7 @@ Setze HTML Warnfarbe. Standard ist \fB#e0954e\fP.
Setze HTML Fehlerfarbe. Standard ist \fB#db4930\fP.
.TP
\fBcolorok=\fP
Setze HTML Gültigkeitsfarbe. Standard ist \fB#3ba557\fP.
Setze HTML Gültigkeitsfarbe. Standard ist \fB#3ba557\fP.
.SS [blacklist]
.TP
\fBfilename=\fP\fISTRING\fP
@ -345,24 +355,24 @@ Siehe [text] Sektion weiter oben.
Siehe [text] Sektion weiter oben.
.
.SH "AUSGABE PARTS"
\fBall\fP (für alle Teile)
\fBrealurl\fP (die volle URL Verknüpfung)
\fBresult\fP (gültig oder ungültig, mit Nachrichten)
\fBall\fP (für alle Teile)
\fBrealurl\fP (die volle URL Verknüpfung)
\fBresult\fP (gültig oder ungültig, mit Nachrichten)
\fBextern\fP (1 oder 0, nur in einigen Ausgabetypen protokolliert)
\fBbase\fP (base href=...)
\fBname\fP (<a href=...>name</a> and <img alt="name">)
\fBparenturl\fP (falls vorhanden)
\fBinfo\fP (einige zusätzliche Infos, z.B. FTP Willkommensnachrichten)
\fBinfo\fP (einige zusätzliche Infos, z.B. FTP Willkommensnachrichten)
\fBwarning\fP (Warnungen)
\fBdltime\fP (Downloadzeit)
\fBchecktime\fP (Prüfzeit)
\fBchecktime\fP (Prüfzeit)
\fBurl\fP (Der Original URL Name, kann relativ sein)
\fBintro\fP (Das Zeug am Anfang, "Beginne am ...")
\fBoutro\fP (Das Zeug am Ende, "X Fehler gefunden ...")
.SH MULTILINE
Einige Optionen können mehrere Zeilen lang sein. Jede Zeile muss dafür
eingerückt werden. Zeilen die mit einer Raute (\fB#\fP) beginnen werden
ignoriert, müssen aber eingerückt sein.
Einige Optionen können mehrere Zeilen lang sein. Jede Zeile muss dafür
eingerückt werden. Zeilen die mit einer Raute (\fB#\fP) beginnen werden
ignoriert, müssen aber eingerückt sein.
ignore=
lconline

View file

@ -98,7 +98,10 @@ Print a warning if content size info is available and exceeds the given
number of \fIbytes\fP.
.TP
\fB\-\-check\-html\fP
Check HTML syntax of current URL.
Check syntax of HTML URLs.
.TP
\fB\-\-check\-css\fP
Check syntax of CSS URLs.
.TP
\fB\-q\fP, \fB\-\-quiet\fP
Quiet operation, an alias for \fB\-o none\fP.

View file

@ -65,6 +65,16 @@ the URI specification. Use with care since broken anchors are not
guaranteed to be detected in this mode.
.br
Command line option: \fB\-\-no\-anchor\-caching\fP
.TP
\fBcheckhtml=\fP[\fB0\fP|\fB1\fP]
Check syntax of HTML URLs.
.br
Command line option: \fB\-\-check\-html\fP
.TP
\fBcheckcss=\fP[\fB0\fP|\fB1\fP]
Check syntax of CSS URLs.
.br
Command line option: \fB\-\-check\-css\fP
.SS \fB[filtering]\fP
.TP
\fBignore=\fP\fIREGEX\fP (MULTILINE)

File diff suppressed because it is too large Load diff

View file

@ -20,6 +20,7 @@ Main functions for link checking.
import os
import cgi
import logging
import urllib
import linkcheck.httplib2
import linkcheck.dns.exception
@ -139,3 +140,19 @@ def get_index_html (urls):
lines.append('<a href="%s">%s</a>' % (url, name))
lines.extend(["</body>", "</html>"])
return os.linesep.join(lines)
class StoringHandler (logging.Handler):
"""Store all emitted log messages in a size-limited list.
Used by the CSS syntax checker."""
def __init__ (self, maxrecords=100):
logging.Handler.__init__(self)
self.storage = []
self.maxrecords = maxrecords
def emit (self, record):
if len(self.storage) >= self.maxrecords:
self.storage.pop()
self.storage.append(record)

View file

@ -177,7 +177,7 @@ class FileUrl (urlbase.UrlBase):
def is_html (self):
"""
Check if file is a parseable HTML file.
Check if file is a HTML file.
"""
if PARSE_EXTENSIONS['html'].search(self.url):
return True
@ -185,6 +185,16 @@ class FileUrl (urlbase.UrlBase):
return True
return False
def is_css (self):
"""
Check if file is a CSS file.
"""
if PARSE_EXTENSIONS['css'].search(self.url):
return True
if PARSE_CONTENTS['css'].search(self.get_content()):
return True
return False
def is_file (self):
"""
This is a file.

View file

@ -180,9 +180,13 @@ class FtpUrl (internpaturl.InternPatternUrl, proxysupport.ProxySupport):
"""
See if URL target is a HTML file by looking at the extension.
"""
if PARSE_EXTENSIONS['html'].search(self.url):
return True
return False
return bool(PARSE_EXTENSIONS['html'].search(self.url))
def is_css (self):
"""
See if URL target is a CSS file by looking at the extension.
"""
return bool(PARSE_EXTENSIONS['css'].search(self.url))
def is_parseable (self):
"""

View file

@ -592,6 +592,16 @@ Use URL %s instead for checking."""), self.url, newurl)
self.data = data
self.dltime = time.time() - t
def encoding_supported (self):
"""Check if page encoding is supported."""
encoding = headers.get_content_encoding(self.headers)
if encoding and encoding not in _supported_encodings and \
encoding != 'identity':
self.add_warning(_('Unsupported content encoding %r.') % encoding,
tag=WARN_HTTP_UNSUPPORTED_ENCODING)
return False
return True
def is_html (self):
"""
See if this URL points to a HTML file by looking at the
@ -604,13 +614,15 @@ Use URL %s instead for checking."""), self.url, newurl)
return False
if headers.get_content_type(self.headers) != "text/html":
return False
encoding = headers.get_content_encoding(self.headers)
if encoding and encoding not in _supported_encodings and \
encoding != 'identity':
self.add_warning(_('Unsupported content encoding %r.') % encoding,
tag=WARN_HTTP_UNSUPPORTED_ENCODING)
return self.encoding_supported()
def is_css (self):
"""Return True iff content of this url is CSS stylesheet."""
if not (self.valid and self.headers):
return False
return True
if headers.get_content_type(self.headers) != "text/css":
return False
return self.encoding_supported()
def is_http (self):
"""

View file

@ -20,6 +20,7 @@ Base URL handler.
import sys
import os
import logging
import urlparse
import urllib2
import urllib
@ -191,6 +192,10 @@ class UrlBase (object):
"""
return False
def is_css (self):
"""Return True iff content of this url is CSS stylesheet."""
return False
def is_http (self):
"""
Return True for http:// URLs.
@ -426,9 +431,11 @@ class UrlBase (object):
except tuple(linkcheck.checker.const.ExcList):
value = self.handle_exception()
self.set_result(unicode_safe(value), valid=False)
# check HTML syntax
# check HTML/CSS syntax
if self.is_html() and self.aggregate.config["checkhtml"]:
self.check_html()
if self.is_css() and self.aggregate.config["checkcss"]:
self.check_css()
self.checktime = time.time() - check_start
# check recursion
try:
@ -637,14 +644,55 @@ class UrlBase (object):
tag=WARN_URL_CONTENT_TOO_LARGE)
def check_html (self):
"""Check HTML if this page."""
import tidy
"""Check HTML syntax of this page (which is supposed to be HTML)."""
try:
import tidy
except ImportError:
linkcheck.log.warn(linkcheck.LOG_CHECK,
_("warning: tidy module is not available; " \
"download from http://utidylib.berlios.de/"))
return
options = dict(output_html=0, show_warnings=1, quiet=True,
input_encoding='utf8', output_encoding='utf8', tidy_mark=0)
doc = tidy.parseString(self.get_content(), **options)
errors = filter_tidy_errors(doc.errors)
for err in errors:
self.add_warning(_("HTMLTidy: %s") % err)
try:
doc = tidy.parseString(self.get_content(), **options)
errors = filter_tidy_errors(doc.errors)
for err in errors:
self.add_warning("HTMLTidy: %s" % err)
except:
# catch _all_ exceptions since we dont want third party module
# errors to propagate into this library
err = str(sys.exc_info()[1])
linkcheck.log.warn(linkcheck.LOG_CHECK,
_("warning: tidy HTML parsing caused error: %s ") % err)
def check_css (self):
"""Check CSS syntax of this page (which is supposed to be CSS)."""
try:
import cssutils
except ImportError:
linkcheck.log.warn(linkcheck.LOG_CHECK,
_("warning: cssutils module is not available; " \
"download from http://cthedot.de/cssutils/"))
return
try:
log = logging.getLogger('cssutils')
log.propagate = 0
del log.handlers[:]
handler = linkcheck.checker.StoringHandler()
log.addHandler(handler)
log.setLevel(logging.WARN)
cssparser = cssutils.CSSParser(log=log)
sheet = cssparser.parseString(self.get_content(), href=self.url)
for record in handler.storage:
self.add_warning("cssutils: %s" % record.getMessage())
except:
raise
# catch _all_ exceptions since we dont want third party module
# errors to propagate into this library
err = str(sys.exc_info()[1])
linkcheck.log.warn(linkcheck.LOG_CHECK,
_("warning: cssutils parsing caused error: %s ") % err)
def parse_url (self):
"""

View file

@ -146,6 +146,7 @@ class Configuration (dict):
# socket timeout in seconds
self["timeout"] = 60
self["checkhtml"] = False
self["checkcss"] = False
def init_logging (self, debug=None):
"""

View file

@ -126,6 +126,10 @@ class LCConfigParser (ConfigParser.RawConfigParser, object):
if self.has_option(section,"anchorcaching"):
val = self.getboolean(section, "anchorcaching")
self.config["anchorcaching"] = val
self.read_check_options(section)
def read_check_options (self, section):
"""Read check* options."""
if self.has_option(section,"checkhtml"):
val = self.getboolean(section, "checkhtml")
if val:
@ -134,9 +138,20 @@ class LCConfigParser (ConfigParser.RawConfigParser, object):
except ImportError:
linkcheck.log.warn(linkcheck.LOG_CHECK,
_("warning: tidy module is not available; " \
"download from http://http://utidylib.berlios.de/"))
"download from http://utidylib.berlios.de/"))
val = False
self.config["checkhtml"] = val
if self.has_option(section,"checkcss"):
val = self.getboolean(section, "checkcss")
if val:
try:
import cssutils
except ImportError:
linkcheck.log.warn(linkcheck.LOG_CHECK,
_("warning: cssutils module is not available; " \
"download from http://cthedot.de/cssutils/"))
val = False
self.config["checkcss"] = val
def read_authentication_config (self):
"""Read configuration options in section "authentication"."""

View file

@ -372,6 +372,9 @@ given number of bytes."""))
group.add_option("--check-html", action="store_true", dest="checkhtml",
help=_(
"""Check HTML syntax with HTML tidy if available."""))
group.add_option("--check-css", action="store_true", dest="checkcss",
help=_(
"""Check CSS syntax with cssutils if available."""))
group.add_option("-q", "--quiet", action="store_true", dest="quiet",
help=_(
"""Quiet operation, an alias for '-o none'.
@ -674,6 +677,8 @@ if constructauth:
'password': _password})
if options.checkhtml is not None:
config["checkhtml"] = options.checkhtml
if options.checkcss is not None:
config["checkcss"] = options.checkcss
assert None == linkcheck.log.debug(linkcheck.LOG_CMDLINE,
"configuration: %s", pprint.pformat(config.items()))