Liste splitten ohne Umwandlung in STR
Verfasst: Samstag 2. Mai 2020, 16:28
Hallo Zusammen,
vielleicht könnt ihr mir bei einem Problem helfen, wo ich gerade nicht weiterkomme: Ich habe eine unbestimmte Menge an eingegebenen URLS (in diesem Fall sind es zwei), von denen ich nun alle sublinks (<a.href...>) extrahiere und in die Liste "liste_html_home_sublinks" speichere. Das funktioniert soweit.
Jede einzelne Liste hat einen Seperator in Form von "split_list = ["ENDE_DER_LISTE"], anhand dessen ich die gesamte Liste splitten möchte und einzelnt abspeichern zu können.
Das sieht dann also so aus:
Liste html_home_sublinks:
https://www.kenfm.de/impressum
https://www.kenfm.de/heute-unter-gleichgesinnten
....
"ENDE DER LISTE"
https://www.br.de/in-der-welt
https://www.br.de/alles-ausser-bayern
...
"ENDE_DER_LISTE
Mein Ziel wäre:
html_home_sublinks_seperate[0] --> Alle sublinks von https://www.kenfm.de
html_home_sublinks_seperate[1] --> Alle sublinks von https://www.br.de
Versucht habe ich es mit folgendem, leider erfolglos:
Die methode .split habe ich bisher nur bei Daten vom Typ str benutzt. Ich muss natürlich im Endergebnis die Liste iterieren können, was bei vorheriger Konvertierung der Liste zu str nicht mehr so recht funktioniert.
Also die Sache wäre an sich nicht so schwer, aber ich kann keine statische Anzahl von Listen für die separierten sublinks "hardcoden", da je nach Eingabe mal 5, mal 2, mal 7 URLs eingegeben werden. Ich müsste also irgendwie eine variable Zahl von Listen erzeugen, je nach Eingabe des Nutzers. Wenn er 7 Urls eingeben möchte, müssten 7 Listen erzeugt werden...keine Ahnung wie das geht
Hier mein Quellcode dazu:
Wie immer wäre ich sehr dankbar, wenn ihr mir Tips geben könnt, wie mein Problem gelöst werden kann. Die Suche im Internet war bisher leider nicht erfolgreich :-/
Besten Gruß,
Marc
vielleicht könnt ihr mir bei einem Problem helfen, wo ich gerade nicht weiterkomme: Ich habe eine unbestimmte Menge an eingegebenen URLS (in diesem Fall sind es zwei), von denen ich nun alle sublinks (<a.href...>) extrahiere und in die Liste "liste_html_home_sublinks" speichere. Das funktioniert soweit.
Jede einzelne Liste hat einen Seperator in Form von "split_list = ["ENDE_DER_LISTE"], anhand dessen ich die gesamte Liste splitten möchte und einzelnt abspeichern zu können.
Das sieht dann also so aus:
Liste html_home_sublinks:
https://www.kenfm.de/impressum
https://www.kenfm.de/heute-unter-gleichgesinnten
....
"ENDE DER LISTE"
https://www.br.de/in-der-welt
https://www.br.de/alles-ausser-bayern
...
"ENDE_DER_LISTE
Mein Ziel wäre:
html_home_sublinks_seperate[0] --> Alle sublinks von https://www.kenfm.de
html_home_sublinks_seperate[1] --> Alle sublinks von https://www.br.de
Versucht habe ich es mit folgendem, leider erfolglos:
Code: Alles auswählen
# using itertools.chain() + zip() to perform custom list split
temp = zip(chain[0], split_list), chain(split_list, [None]))
res = list(html_home_sublinks[i : j] for i, j in temp)
Also die Sache wäre an sich nicht so schwer, aber ich kann keine statische Anzahl von Listen für die separierten sublinks "hardcoden", da je nach Eingabe mal 5, mal 2, mal 7 URLs eingegeben werden. Ich müsste also irgendwie eine variable Zahl von Listen erzeugen, je nach Eingabe des Nutzers. Wenn er 7 Urls eingeben möchte, müssten 7 Listen erzeugt werden...keine Ahnung wie das geht

Hier mein Quellcode dazu:
Code: Alles auswählen
# html_home_seperate[0] --> https://www.kenfm.de
# html_home_seperate[1] --> https://www.br.de
c = 0
liste_html_home_sublinks=[] # Speicherung der Sublinks aller URLs
split_list = ["ENDE_DER_LISTE"] # Seperator
html_home_sublinks_seperate = []
for link in self.stored_data_url:
# Öffne HTML Seite BeautifulSoup
soup = BeautifulSoup(html_home_seperate[c], 'html.parser')
# Extrahiere alle Sublinks in eine Liste
html_home_sublinks = [a['href'] for a in soup.find_all('a', href=True) if a.text]
# Entferne alle Dopplungen in der Liste
html_home_sublinks = set(html_home_sublinks)
html_home_sublinks = list(html_home_sublinks)
# Ende der Liste einfügen für spätere Separierung
html_home_sublinks = html_home_sublinks + split_list
# List Comprehension
for item in html_home_sublinks:
liste_html_home_sublinks.append(item)
c += 1
Besten Gruß,
Marc