2016-05-02 1 views
0

Ich muss eine "if-Anweisung" erstellen, um zu überprüfen, ob die Zeichenfolge "cette entreprise est member de la FVE" Teil der Webseite ist.Daten scraping: Wie überprüft man, ob eine Webseite eine bestimmte Zeichenfolge enthält

item_url = "http://www.fveconstruction.ch/anDetails.aspRT=2&M=01&R=1&ID=42105701" 
response = requests.get(item_url) 
soup = BeautifulSoup(response.text, 'html.parser') 
test = soup.findAll(text = re.compile('cette entreprise est membre de la FVE.\w+..\w+')) 
print(test) 

Und es druckt mir eine leere Liste. Gibt es jemanden mit einer Idee? Und ich würde gerne wissen, wie man die Aussage überprüft? Wenn ich schreibe:

if soup.findAll(text = re.compile('cette entreprise est membre de la FVE.\w+..\w+')): 
    do smth 
else: 
    do smth 

Wenn es nicht die Zeichenfolge, die ich suche, sollte es falsch Recht auf Rückkehr?

+2

Warum können Sie nicht verwenden ' 'Text' nur in response.text'? –

+0

Ja, wenn 'findAll' eine leere Liste zurückgibt, wird sie als falsch behandelt und der Code wird auf 'else' gesetzt. –

+0

Vor der Bearbeitung, dieser Beitrag sagte '' '.findAll()' '' ... Es ist am besten '' '.find_all()' '' zu verwenden, wenn Sie BS4 verwenden, da findAll von bs3 ist – JasTonAChair

Antwort

1

Ich überprüfte den HTML-Code der Seite, die Sie in Ihrem Code angegeben haben, und bemerkte zwei Dinge. Hier ist die eigentliche HTML des Textes Sie versuchen zu finden:

<span class="entrepriseDef">Cette entreprise est membre de la FVE&nbsp;&nbsp;</span> 

Die beiden Probleme, die ich in Ihrem Code zu sehen ist, dass Sie für ein kleinen „c“ sind, kein Großbuchstabe " C ". Außerdem suchen Sie nach einem Punkt am Ende des Textes, der nicht vorhanden ist. Wenn Sie eine Website screenen, sehen Sie sich den HTML-Code dieser Seite an (geben Sie Strg + U in Ihrem Browser ein, um den HTML-Code anzuzeigen) und suchen Sie nach dem genauen Text. Kopieren Sie dann diesen Text in Ihren Code, damit er genau ist.

Der Code sollte so aussehen:

item_url = "http://www.fveconstruction.ch/anDetails.asp?RT=2&M=01&R=1&ID=42105701" 
response = requests.get(item_url) 
soup = BeautifulSoup(response.text, 'html.parser') 
test = soup.findAll(text = re.compile('Cette entreprise est membre de la FVE\w+..\w+')) 
print(test) 
1

Ich habe keine Möglichkeit zu wissen, ob Ihre regex funktioniert oder nicht, da Ihre Regex nicht Teil Ihres Beitrags ist.

Diese Antwort ist es, Ihnen zu zeigen, wie man überprüfen, ob die „Webseite eine bestimmte Zeichenfolge enthält“, ohne die regex Frage.

import requests 
r = requests.get('http://www.fveconstruction.ch/anDetails.asp? 
RT=2&M=01&R=1&ID=42105701') 

if 'cette entreprise est membre de la FVE.' in r.text: 
    print ('Yes') 
else: 
    print ('No') 
+0

Danke für die antworte aber warum es mir "nein" zurückgibt und es mir "ja" zurückgeben sollte. Gibt es etwas Besonderes auf der Website? Wenn Sie auf die URL schauen, direkt unter dem fettgedruckten Titel "A.GUIDO & FILS SA", steht "Cette entreprise est member de la FVE"? – jjyoh

+0

Sie haben "cette" in Ihrem Code und in Ihrem Kommentar haben Sie 'Cette' geschrieben mit Kapital C. Außerdem gibt es eine' .' Periode in Ihrem Code, die nicht in Ihrem Kommentar ist. Stellen Sie sicher, dass die "string" in Ihrer 'if'-Anweisung genau die gleiche wie im Text ist. –