2017-01-03 5 views
0

Я работаю над довольно крутым проектом, но мне нужна помощь. Вы видите, что я собираю прокси из sslproxies.org, но сортировка этих прокси, собранных из таблицы, в список без дополнительной информации довольно сложно. Пока мой код не работает. Надеюсь, что ребята могут помочь. Что я хочу сделать, это удалить шестой элемент в списке после каждых двух.Удаление предметов из списка не работает

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

не удаляйте элементы из списка, если вы итерации вперед. см. http://stackoverflow.com/documentation/python/3553/common-pitfalls/12259/list-multiplication-and-common-references#t=201701031652321895116 – MooingRawr

+0

также, ваш для 'if count> = 6' вы уверены, что это Хорошо? –

+0

Вы могли бы быть немного понятнее о том, что хотите? Вы хотите сохранить два элемента, затем удалить четыре, затем сохранить два, затем удалить четыре и т. Д.? –

ответ

0

Я считаю, что вы хотите выбрать первые 2 столбца. В этом случае вы можете попробовать что-то вроде этого с pandas read html. Просто отметьте, что я не могу получить доступ к указанному вами сайту. Таким образом, я не проверял этот код

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

Вот генератор, который дает два элемента, затем пропускает шесть, а затем дает еще два и т.д.

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

Вы можете использовать это, чтобы сделать список как

clist = list(skip_six(tlist)) 
+0

Это прекрасно. Сэр, вы просто потрясающие. Спасибо. –

Смежные вопросы