Die Datei, die Sie geöffnet haben in Schreib geöffnet ("w") Modus in der Schleife. Dies bedeutet, dass die Datei für jede Iteration der Schleife überschrieben wird. Wenn Sie versuchen, alle von der Abfrage zurückgegebenen Elemente zu sammeln, erhalten Sie nur die letzte. Wenn Sie alle von ihnen in der Datei haben wollen, sind folgende alternative Möglichkeiten, um es zu beheben:
# Open the file in append mode
for item in soup.select('.profile-detail'):
f = open('htmlfile.html', 'a')
f.write(item)
f.close()
Dies allerdings nicht so gut ist, da es nicht notwendig ist, zu öffnen und die Datei auf jeder Iteration zu schließen. Wir können die Datei offen halten für alle unsere schreibt:
# Open and close file just once
f = open('htmlfile.html', 'w') # Okay to open in write mode now
for item in soup.select('.profile-detail'):
f.write(item)
f.write('\n') # In case you're expecting each on a new line
f.close()
Oder mein persönlicher Favorit, ziemlich viel zu tun das gleiche, aber mit Kontexten, so dass Sie nicht über keine Sorge, die f.close()
zu vergessen oder es die falsche Vertiefung versehentlich geben oder später etwas:
# With contexts
with open('htmlfile.html', 'w') as f:
for item in soup.select('.profile-detail'):
f.write(item)
f.write('\n') # In case you're expecting each on a new line
# File is auto-magically closed by the time you get here
Willkommen bei SO. Bitte posten Sie die vollständige Fehlermeldung. Könnten Sie Ihre Frage auch anders formulieren? "Ich möchte Artikel ..." macht keinen Sinn, da "Artikel" kein Verb ist. Was willst du mit dem "Gegenstand" machen? –
@ Einsames Neuron ich diesen Fehler gefunden: Traceback (jüngste Aufforderung zuletzt): File "lkdn1.py", Zeile 17, in f.write (Artikel) Typeerror: write() Argument str werden muß, nicht Tag –