Ich habe einen sehr einfachen Crawler geschrieben, um zu überprüfen, ob eine Verbindung tot ist oder nicht bs4 verwendet. Ich möchte überprüfen, ob das Anker-Tag eine href hat oder nicht (auf diese Weise kann ich prüfen, ob die Verbindung aktiv ist oder nicht). Es gibt nur ein Ankerelement auf der Seite.Beautifulsoup4 - Versuchen, die Daten mit einer while-Schleife zu erhalten
Dies ist der Code:
import requests
from bs4 import BeautifulSoup
def check():
url = 'https://somewebsite.net/'
source_code = requests.get(url)
plain_text = source_code.text
soup = BeautifulSoup(plain_text,'html.parser')
for a in soup.findAll('a'):
href = a.get('href')
if href != '':
print('a')
else:
print('b')
check()
Dies funktioniert gut, aber ich möchte der Crawler alle paar Sekunden, um die Website zu halten überprüfen. Ich habe versucht, dies mit einer unendlichen While-Schleife zu implementieren, aber ich habe keine Ergebnisse erhalten.
while True:
check()
Ich möchte wissen, warum dies nicht funktioniert hat und mögliche Lösungen.
Danke.
Ich denke, Sie nach Websites handeln sollte. Da kann sein, dass '' -Tag hat 'src' Attribut in (dh eine Datei als Link). Und wenn Sie Programm für alle paar Sekunden überprüfen möchten, können Sie' time.sleep() 'Methode von' time' Modul haben . Geben Sie Nein ein. von Sekunden warten Sie darauf, dass das Programm erneut überprüft. – GadaaDhaariGeek
Erhalten Sie einen Fehler, wenn Sie eine Weile warten? Möglicherweise warten Sie auf "Anforderungen", um eine Zeitüberschreitung zu erhalten, und treffen das Wiederholungslimit, das konfiguriert werden kann. Zusätzlich können Sie einen "request.head" ausführen, um nur eine Kopfanfrage zu erhalten, um den Statuscode zu überprüfen, wenn Sie nur interessiert sind, ob es lebendig oder tot ist. Das Gleiche gilt wie oben. – sytech
@GadaaDhaariGeek Das Anchor-Tag hat ein href-Attribut und kein src-Attribut. –