Ich versuche, mehr als 3000 Websites mit schönen Suppe in Python zu kratzen. Mein Code hat für ungefähr 50 Webseiten funktioniert, wird aber hängen bleiben, wenn ich 1000 oder 3000+ gleichzeitig laufen lasse.Scraping Texte mit schönen Suppe in Python - warum funktioniert nicht Bulk-Adressen
Es ist merkwürdig, dass der Code für mehrere Websites nicht funktioniert, ich würde gerne einen Rat bekommen, wie man Probleme damit macht. Ist das normal oder gibt es einen anderen Weg?
Wenn ich 1000 laufen lasse, liefert es auch nach 6 oder 7 Stunden keine Ergebnisse, also vermute ich, dass der Code überhaupt nicht funktioniert. Ich würde gerne ein paar Kommentare bekommen.
Code:
import csv
d = csv.DictReader(open('file.csv', 'rU'))
soc = []
for row in d:
soc.append(row)
import sys
reload(sys)
sys.setdefaultencoding('utf8')
from bs4 import *
import time
import requests
import urllib2
# create lists
mega = []
mega2 = []
mega3 = []
for i in range(len(soc)): # all links, about 3000
myurl = soc[i]['report_url']
try:
html = urllib2.urlopen(myurl).read()
except urllib2.HTTPError, error:
continue
except urllib2.URLError, error:
continue
soup = BeautifulSoup(html, "html.parser")
row = soup.findAll('tr')
for r in row:
mega.append([r.get_text()]) # force all raw text into a list in list
mega2 = [x[0] for x in mega]
mega3.append(mega2)
time.sleep(2)
Haben Sie überprüft, ob Sie von Ihrem IPS oder ihrer CDN/Firewall blockiert werden? – VMRuiz
Fügen Sie einige Druckanweisungen hinzu, um zu sehen, wo es stecken bleibt. Eine Möglichkeit wäre, zwischen jeder Zeile einen hinzuzufü- gen und nur 1 ... n auszudrucken. – Lexxxxx
@Lexxxxxx Können Sie genauer sein? Wie kann ich Python mitteilen, wo es hängen bleibt? – song0089