2016-09-16 7 views
0

Ich habe einen Web-Scrapper, der mir Werte zurückgibt, wie im Beispiel unten.An Python-Listen anhängen

# Other code above here. 
test = [] 

results = driver.find_elements_by_css_selector("li.result_content") 
for result in results: 
    # Other code about result.find_element_by_blah_blah 
    product_feature = result.find_element_by_class_name("prod-feature-icon") 

    for each_item in product_feature.find_elements_by_tag_name('img'): 
     zz = test.append(each_item.get_attribute('src')[34:-4]) # returning the values I want 
     print(zz) 

Der obige Code würde dies die Ergebnisse wie ausdrucken: (Welche sind die Werte, ich will)

TCP_active 
CI 
DOH_active 
TCP_active 
CI 
DOH 
TCP 
CI_active 
DOH_active 

Ich möchte die Ergebnisse unter erreichen:

[TCP_active, CI, DOH_active] 
[TCP_active, CI, DOH] 
[TCP, CI_active, DOH_active] 

wie sollte Ich mache es?

Ich habe versucht:

test.append(each_item.get_attribute('src')[34:-4]) 

Aber das gibt mir:

[TCP_active] 
[TCP_active, CI] 
[TCP_active, CI, DOH_active] 
[TCP_active, CI, DOH_active, TCP] 
... 

Hoffnung meine Erklärung klar ist

+0

Ich bin mir nicht sicher, ob ich vollständig verstehe, aber haben Sie sich ein Wörterbuch dafür gedacht? Es scheint, dass ein Wörterbuch eine bessere und elegantere Lösung wäre ... – JasonD

+0

Verbesserte meine Frage, die hilfreicher sein könnte –

+1

Erstellen Sie eine neue Liste für jedes 'result in results' eine Iteration, die' für jedes_Element in product_feature.find_elements_by_tag_name (..) ' Schleife hängt an. Dann füge diese Liste an "testen". –

Antwort

2

Anstatt print, hängen Sie Ihre Ergebnisse zu Listen; eine neue Liste pro Iteration der äußeren Schleife:

test = [] 

results = driver.find_elements_by_css_selector("li.result_content") 
for result in results: 
    # Other code about result.find_element_by_blah_blah 
    product_feature = result.find_element_by_class_name("prod-feature-icon") 
    features = [] 
    for each_item in product_feature.find_elements_by_tag_name('img'): 
     features.append(each_item.get_attribute('src')[34:-4]) 
    test.append(features) 

Sie können features drucken, wenn Sie wollen, oder test, nur um zu sehen, was auf jeder Ebene Ihrer for Schleifen geschieht.

+0

Danke für Ihre schnelle Antwort! Ich habe deine Methode ausprobiert und es funktioniert. :) –

0

OK, nicht ganz sicher, was Sie wollen, aber der folgende Code gibt den Ausgang Sie wollen:

test = [] 

results = driver.find_elements_by_css_selector("li.result_content") 
for result in results: 
    # Other code about result.find_element_by_blah_blah 
    product_feature = result.find_element_by_class_name("prod-feature-icon") 

    zz = [] 
    for each_item in product_feature.find_elements_by_tag_name('img'): 
     zz = test.append(each_item.get_attribute('src')[34:-4]) # returning the values I want 

    print(zz) 

Wenn Sie die Daten speichern wollen und nicht drucken, ein Wörterbuch etwas wie folgt verwenden:

test = [] 
zz_store = {} 

results = driver.find_elements_by_css_selector("li.result_content") 
for result in results: 
    # Other code about result.find_element_by_blah_blah 
    product_feature = result.find_element_by_class_name("prod-feature-icon") 

    zz = [] 
    for each_item in product_feature.find_elements_by_tag_name('img'): 
     zz = test.append(each_item.get_attribute('src')[34:-4]) # returning the values I want 

    zz_store[result] = zz 
    print(zz)