2017-01-03 6 views
0

Ich arbeite an einem ziemlich coolen Projekt, aber ich brauche Hilfe. Sie sehen, dass ich Proxies von sslproxies.org sammle, aber das Sortieren dieser Proxies, die von der Tabelle gesammelt wurden, in eine Liste ohne zusätzliche Informationen ist ziemlich schwierig. Bis jetzt funktioniert mein Code nicht. Hoffe ihr Leute könnt helfen. Was ich tun möchte, ist den sechsten Gegenstand in der Liste nach jeweils zwei zu löschen.Entfernen von Elementen aus der Liste funktioniert nicht

f = open("proxies.txt", 'w+') 
def getProxy(): 
    url = "https://www.sslproxies.org" 
    source_code = requests.get(url) 
    plain_text = source_code.text 
    soup = BeautifulSoup(plain_text, "html.parser") 
    global tlist 
    tlist = [] 
    for tr in soup.find_all('tr'): 
     for td in tr.find_all('td'): 
      tlist.append(td) 
    clist = tlist 
    count = 0 
    for word in clist: 
     count += 1 
     if count > 2: 
      clist.remove(word) 
      count += 1 
      if count >= 6: 
       count = 0 
     else: 
      continue 
f.write(str(clist)) 
+4

Elemente nicht aus einer Liste entfernen, wenn Sie vorwärts iterieren. siehe: http://stackoverflow.com/documentation/python/3553/common-pitfalls/12259/list-multiplication-and-common-references#t=201701031652321895116 – MooingRawr

+0

auch, Ihr für 'wenn zählen> = 6' Sie sicher, dass das ist in Ordnung? –

+0

könnten Sie ein wenig klarer über das sein, was Sie wollen? Möchten Sie zwei Elemente behalten, dann vier löschen, dann zwei behalten und dann vier usw. löschen? –

Antwort

0

Ich glaube, dass Sie die ersten 2 Spalten auswählen möchten. In diesem Fall möchten Sie vielleicht etwas mit pandas read html versuchen. Beachten Sie, dass ich nicht auf die von Ihnen erwähnte Website zugreifen kann. So habe ich diesen Code nicht getestet

import pandas as pd 
df=pd.read_html(io ='https://www.sslproxies.org') 
print df 
print df[['IP Address','Port']] # select the columns that you are interested in 
1

Hier ist ein Generator, der zwei Elemente ergibt, dann springt sechs, dann zwei ergibt mehr, etc

def skip_six(l): 
    for i, x in enumerate(l): 
     if i%8 <= 1: 
      yield x 

können Sie diese verwenden, um eine Liste zu machen wie

clist = list(skip_six(tlist)) 
+0

Das ist perfekt. Sir, Sie sind einfach unglaublich. Vielen Dank. –

Verwandte Themen