Ich habe eine Liste von 8000 Website-URLs. Ich möchte den Text von den Websites abkratzen und alles als csv-Datei speichern. Um dies zu tun, wollte ich jede Textseite in einer Liste speichern. Dies ist mein bisheriger Code, der produziert und "MemoryError".Speicherfehler beim Anhängen zur Liste in Python
import os
from splinter import *
import csv
import re
from inscriptis import get_text
from selenium.common.exceptions import WebDriverException
executable_path = {'executable_path' :'./phantomjs'}
browser = Browser('phantomjs', **executable_path)
links = []
with open('./Hair_Salons.csv') as csvfile:
spamreader = csv.reader(csvfile, delimiter=',')
for row in spamreader:
for r in row:
links.append(r)
for l in links:
if 'yelp' in l:
links.remove(l)
df = []
for k in links:
temp = []
temp2 = []
browser.visit(k)
if len(browser.find_link_by_partial_text('About'))>0:
about = browser.find_link_by_partial_text('About')
print(about['href'])
try:
browser.visit(about['href'])
temp.append(get_text(browser.html)) # <----- This is where the error is occuring
except WebDriverException:
pass
else:
browser.visit(k)
temp.append(get_text(browser.html))
for s in temp:
ss = re.sub(r'[^\w]', ' ', s)
temp2.append(ss)
temp2 = ' '.join(temp2)
print(temp2.strip())
df.append(temp2.strip())
with open('Hair_Salons text', 'w') as myfile:
wr = csv.writer(myfile, quoting=csv.QUOTE_ALL)
wr.writerow(df)
Wie kann ich vermeiden, einen Speicherfehler zu bekommen?
Senden Sie die Daten während der Schleife in eine Datei, anstatt sie alle später zu speichern – doctorlove
@doctorlove Wie würde ich das tun? Ich habe es versucht, aber scheinen meine Datei jedes Mal zu überschreiben, wenn die Schleife Schleifen. – briyan
Sie sollten Ihren "Browser = Browser ('phantomjs', ** ausführbarer_Pfad)" jedes Mal löschen, wenn Sie zur nächsten Site weitergehen. Etwas wie "driver.quit()". Dies ist wahrscheinlich Ihr Speicherproblem. – chocksaway