Ich versuche, diese Funktion erneut auszuführen, wenn sie die Informationen auf der Seite nicht findet.Festlegen einer einfachen Wiederholungsfunktion in Python beim Analysieren von HTML
Ich dachte, das wäre eine Lösung, aber es funktioniert nicht. Ich bin nicht sicher, wie man die Schleife des Kratzens mit einfacher Funktionalität passieren lässt. Ich habe versucht, das Wiederholungsmodul zu verwenden, aber es hat Probleme beim Installieren, daher wäre eine Lösung mit einem festen Code ideal.
Mein Code ist unten
import time, requests, webbrowser, sys, os, re, json
from bs4 import BeautifulSoup
from colorama import Fore, Back, Style, init
import subprocess as s
url = "http://notimportant.com"
r = requests.get(url)
soup = BeautifulSoup(r.content, "html.parser")
def getIds():
global product_id
for script in scripts:
if 'spConfig =' in script.getText():
#idlive = True
regex = re.compile(r'var spConfig = new Product.Config\((.*?)\);')
match = regex.search(script.getText())
spConfig = json.loads(match.groups()[0])
for key, attribute in spConfig['attributes'].iteritems():
for option in attribute['options']:
if option['label_uk'] == size:
label = option['label_uk'].strip()
for product_id in option['products']:
print(Fore.CYAN + "Size Found!")
print product_id, "-", label
#str = product_id
#productsizeid = str
else:
print(Fore.RED + "Sizes not live yet")
print("Retrying in 10 seconds . . .")
time.sleep(10)
print("Trying again. . .")
getIds()
sind Sie zufällig die brakcets fehlt nach GetIDs Aufruf? – Eumel
das ist nur ein Tippfehler auf meiner Kopie und einfügen, mit den Klammern, wird es die IDs gefunden und auch die sonst Nachricht gedruckt, so ist es immer noch falsch – cbos93
Haben Sie iterativ und nicht rekursiv versucht? Das Problem, das ich hier sehe, ist, wenn das Skript nicht 'spConfig =' darin hat, wird es endlos Schleife. Vielleicht ist es das, was Sie wollen, aber der Call-Stack wird überladen, wenn er rekursiv ist. – AlEmerich