2017-03-06 3 views
0

Ich habe den HTML-Code einer Website in einer .txt Datei auf meinem Computer gespeichert. Ich möchte alle URLs aus dieser Textdatei extrahieren, mit dem folgenden Code:Wie URLs korrekt aus HTML-Code extrahieren?

def get_net_target(page): 
    start_link=page.find("href=") 
    start_quote=page.find('"',start_link) 
    end_quote=page.find('"',start_quote+1) 
    url=page[start_quote+1:end_quote] 
    return url 
my_file = open("test12.txt") 
page = my_file.read() 
print(get_net_target(page)) 

jedoch das Skript nur druckt die erste URL, aber nicht alle anderen Links. Warum ist das?

Antwort

2

Sie müssen eine Schleife implementieren, um alle URLs zu durchlaufen.

print(get_net_target(page)) nur die erste URL druckt in page gefunden, so dass Sie diese Funktion immer wieder aufrufen müssen, jedes Mal page durch die Teilzeichen page[end_quote+1:] bis keine URL ersetzt wird gefunden.

Um Ihnen den Einstieg, next_index wird die letzte Endung URL-Position speichern, dann wird die Schleife die folgenden URLs abrufen:

next_index = 0 # the next page position from which the URL search starts 

def get_net_target(page): 
    global next_index 

    start_link=page.find("href=") 
    if start_link == -1: # no more URL 
    return "" 
    start_quote=page.find('"',start_link) 
    end_quote=page.find('"',start_quote+1) 
    next_index=end_quote 
    url=page[start_quote+1:end_quote] 
    end_quote=5 
    return url 


my_file = open("test12.txt") 
page = my_file.read() 

while True: 
    url = get_net_target(page) 
    if url == "": # no more URL 
     break 
    print(url) 
    page = page[next_index:] # continue with the page 

auch vorsichtig sein, da Sie nur Links abrufen, die innerhalb " eingeschlossen sind, aber sie kann von ' oder sogar nichts eingeschlossen werden ...

+0

Vielen Dank für Ihre Antwort! Ich bin neu bei Python. Könnten Sie bitte ein Beispiel geben, wie Sie das umsetzen können? Das wäre sehr hilfreich. – jakeT888

+1

Ich habe die Antwort mit einem Beispielcode aktualisiert, damit Sie den Algorithmus mit Ihrem eigenen Startcode besser verstehen. – SegFault