2016-09-16 3 views
0

Ich biete Werte für einen Website-Filter an, um verschiedene HTML zu generieren, die ich parse. Ich möchte jede Seitenquelle in einem anderen Python-Objekt speichern, um die Daten zu unterscheiden. Ich habe eine Liste von leeren Objekten, an die ich mich anhänge. Parsing-Seitenquelle und möchte jede Seitenquelle in einem eigenen Python-Objekt speichern, das sich selbst in einer Liste befindet. Auf diese WeiseVerschachtelt for-loop und an leere Objekte anhängen

Die Herausforderung besteht darin, wie die Td-Elemente von einer bestimmten HTML-Quelle an das bestimmte leere Objekt in der Liste angefügt werden. Ich muss HTML-Quelle bei jeder Iteration in einem separaten Objekt speichern, das selbst in einer Liste gefunden wird.

werde ich mein Beispiel vereinfachen:

years = ['2015', '2016] 
weeks = ['1', '2'] 
store = [[], [], [], []] 

Das gibt mir 4 Sätze von HTML-Quelle, die ich aufnehmen müssen:

for y in years: 
    for w in weeks: 

#Ich y verwenden und w in webdriver.select zu liefern Werte für Web-Seite Filter ich werde dann BS verwenden Seite Quelle für jede Iteration zu kopieren:

html = browser.page_source 

soup = BeautifulSoup(html, "lxml") 

Und dann iteriert durch die bestimmte Seite Quelle td Elemente zu extrahieren:

counter = 0  
for el in soup.find_all('td'): 

Index, um Speicherliste bereitzustellen td Elemente zu trennen leere Objekte

for el in soup.find_all('td'): 
     store[counter].append(el.get_text()) 
counter = counter + 1 

Streifen das Element der HTML zu anhängen Zeichen und zum Zähler hinzufügen, um zum nächsten Objekt in der Geschäftsliste zu gelangen.

Das Ergebnis ist jedoch, dass alle td-Elemente an das erste Objekt in der Liste angehängt werden, anstatt dass jede HTML-Quelle ihr eigenes Objekt hat. Was vermisse ich?

Wäre es besser, die Kartenfunktion irgendwie zu verwenden?

Antwort

0

Ihre Aussage

counter=counter+1 

ist innerhalb der nicht-Schleife.

Sie müssen es auf der gleichen Ebene wie die vorherige Zeile einrücken, so dass der Zähler jedes Mal um die Schleife erhöht wird