2017-07-20 2 views
-1

ich arbeite einfaches Programm, und ich habe zwei Schleifen bekam. Hier wird von ersten (for div in productDivs:):Python - Match von einer Schleife zu einem anderen

zalukaj.com/serial-online/81009/lian_yu.html 
zalukaj.com/serial-online/80927/missing.html 
zalukaj.com/serial-online/80854/honor_thy_fathers.html 

Und hier ist der Ausgang von der zweiten Schleife for div2 in productDivs::

Lian Yu 
Missing 
Honor Thy Fathers 

Ich möchte so etwas machen:

Lia Yu = zalukaj.com/serial-online/81009/lian_yu.html 
Missing = zalukaj.com/serial-online/80927/missing.html 

Wie Kann ich es schaffen ?

Edit:

Voll Code:

link = "https://zalukaj.com/kategoria-serialu/2689,1/arrow_arrow_sezon_5/" 
response = requests.get(link).content 
soup = BeautifulSoup(response, 'html.parser') 

productDivs = soup.findAll('div', attrs={'id': 'sezony'}) 
for div in productDivs: 
    linki = div.find('a')['href'][2::] 

for div2 in productDivs: 
    odcinki = div2.find('a')['title'] 
+0

was meinst du es "machen"? Soll es als String gespeichert werden? wie dicts? Was nützt es? Was hast du probiert? –

+0

sollten Sie auch Ihren Code posten. –

+3

"Wie kann ich es tun?" Ich habe gute Dinge über das Schreiben von Code gehört. –

Antwort

3

einfach Ihre beiden Schleifen kombinieren. Extrahiere sowohl den Link als auch den Titel und drucke sie zusammen aus.

productDivs = soup.findAll('div', attrs={'id': 'sezony'}) 
for div in productDivs: 
    linki = div.find('a')['href'][2::] 
    odcinki = div.find('a')['title'] 
    print("%s = %s" % (odcinki, linki)) 
+0

Thx. Es funktioniert! – jestembotem

1

Unter der Annahme, dass die beiden Schleifen durchlaufen zwei Listen:

list1 = [ 
    'zalukaj.com/serial-online/81009/lian_yu.html', 
    'zalukaj.com/serial-online/80927/missing.html', 
    'zalukaj.com/serial-online/80854/honor_thy_fathers.html' 
] 

list2 = [ 
    'Lian Yu', 
    'Missing', 
    'Honor Thy Fathers' 
] 

Ich werde verwenden zip():

for pair in zip(list1, list2): 
    print(pair[1], '=', pair[0]) 

Ausgabe:

Lian Yu = zalukaj.com/serial-online/81009/lian_yu.html 
Missing = zalukaj.com/serial-online/80927/missing.html 
Honor Thy Fathers = zalukaj.com/serial-online/80854/honor_thy_fathers.html 
1

Was ist mit einfach Speichern Ihrer Schleife Ergebnisse in zwei getrennten Liste und Ausführen einer dritten Schleife, um anzuzeigen, was Sie wollen.

l1 = [] # your first loop result 

# first loop... 

l2 = [] # your second loop result 

# second loop... 

for elem1, elem2 in zip(l1, l2): 
    print elem1 + '=' + elem2 

Hier ist die Zip-Dokumentation, wenn Sie diese Funktion nie zuvor verwendet: https://docs.python.org/2/library/functions.html#zip.

+0

Das wird nicht die gewünschte Ausgabe geben. Hast du die Ausgabe überprüft? –

+0

Ja, ich habe es versucht und es funktioniert gut. Was läuft falsch für dich? – Laurentourte

+0

Gibt es keine umgekehrte Ausgabe? –

1

Sie Iterieren über die gleiche productDivs zweimal, jedes Mal, 1 Aktion zu tun ... statt über sie iterieren nur einmal mit beiden Aktionen, so dass anstelle von

for div in productDivs: 
    linki = div.find('a')['href'][2::] 

for div2 in productDivs: 
    odcinki = div2.find('a')['title'] 

dies tun:

for div in productDivs: 
    linki = div.find('a')['href'][2::] 
    odcinki = div.find('a')['title'] 
    print(odcinki, '=', linki) 

oder wenn Sie es als eine Liste von Strings erhalten möchten, können Sie es mit einer Zeile

erfolgen

oder als ein dict von Schlüsseln und Werten:

mydict = {div.find('a')['title']: div.find('a')['href'][2::] for div in productDivs} 

zu Felicity Smoak Sagen Sie meine Grüße

+1

Thx. Es funktioniert auch. – jestembotem

Verwandte Themen