Wie stelle ich sicher, dass re.findall () an der richtigen Stelle stoppt?

8

Hier ist der Code, den ich habe:

%Vor%

Das Ergebnis ist:

%Vor%

Wenn ich jemals einen Crawler entworfen habe, um mir Titel von Websites zu beschaffen, könnte ich am Ende so etwas wie einen Titel für die Website finden.

Meine Frage ist, wie limitiere ich findall auf ein einziges <title></title> ?

    
Cody Gray 20.07.2013, 19:15
quelle

4 Antworten

13

Verwenden Sie re.search anstelle von re.findall , wenn Sie nur eine Übereinstimmung wünschen:

%Vor%

Wenn Sie alle Tags haben wollten, dann sollten Sie es als nicht gierig (dh - .*? ) betrachten:

%Vor%

Aber denken Sie daran, BeautifulSoup oder lxml oder ähnliches zu verwenden, um HTML zu parsen.

    
Jon Clements 20.07.2013 19:16
quelle
5

Verwenden Sie stattdessen eine nicht-gierige Suche:

%Vor%

Das Fragezeichen besagt, dass so wenig Zeichen wie möglich übereinstimmen. Nun wird Ihr findall () jedes der von Ihnen gewünschten Ergebnisse zurückgeben.

Ссылка

    
Chip Camden 20.07.2013 19:21
quelle
2
%Vor%

Fügen Sie ? nach * hinzu, damit es nicht gierig wird.

    
zhangyangyu 20.07.2013 19:16
quelle
1

Mit BeautifulSoup-Modul wird es viel einfacher.

Ссылка

    
Codengine 21.05.2014 08:55
quelle

Tags und Links