2016-06-03 24 views
0

Was Sie hier sehen, ist ein einfacher Sitemap Generator. Das Problem ist, dass, wenn es ein Duplikat eines Links gibt, es scheint, das Duplikat mit dem nächsten URL zu kombinieren, anstatt nichts zu tun. Zum Beispiel wird es sagen http://www.apple.comhttp://www.apple.com/sitemap Alle Hinweise, Referenzen oder dergleichen würden sehr geschätzt werden.Duplikate innerhalb der Liste werden kombiniert und nicht weggelassen. Bedingter Fehler

from time import sleep 
from urllib.request import urlopen 
allurl=["http://www.apple.com"] 
url="http://www.apple.com" 
toturl=[] 
prinst=True 
print("Urllib loaded") 
for df in allurl: 
     toturl=[] 
     try: 
      r = str(urlopen(url).read()) 
     except: 
      pass 
     for zr in range(0,len(r)-1): 
       if r[zr]=="h" and r[zr+1]=="r" and r[zr+2]=="e" and r[zr+3]=="f"and r[zr+4]=="=" and r[zr+6]=="h": 
         for y in range(6,100000): 
           if r[zr+y]=='"': 
             break 
           else: 
             toturl.append(r[zr+y]) 
         if "".join(toturl) not in allurl: #Conditional Being Ignored, so to speak. 
           print("".join(toturl)) 
           allurl.append("".join(toturl)) 
           toturl=[] 
           url=df 
           print("\n") 
+1

Verwenden Sie einige HTML-Parser, um HTML zu analysieren! – Daniel

Antwort

0

Sie können toturl nicht zurücksetzen, wenn ein Duplikat vorhanden ist. Allways initial Variablen, wenn sie zum ersten Mal verwendet werden, nicht wenn Sie damit fertig sind.

from time import sleep 
from urllib.request import urlopen 

allurl = ["http://www.apple.com"] 
url = "http://www.apple.com" 
prinst = True 
print("Urllib loaded") 

for df in allurl: 
    try: 
     r = str(urlopen(url).read()) 
    except: 
     print("some exception occured!") 
    else: 
     for zr in range(0,len(r)-1): 
      if r[zr:zr+5]=="href=" and r[zr+6]=="h": 
       toturl = [] 
       for y in range(6,100000): 
        if r[zr+y] == '"': 
         break 
        else: 
         toturl.append(r[zr+y]) 
       toturl = "".join(toturl) 
       if toturl not in allurl: 
        print(toturl) 
        allurl.append(toturl) 
        url = df 
        print("\n")