2015-07-24 2 views
0

Я пытаюсь добавить элементы в список под названием «bucket», но я не могу настроить его правильно. Вопрос заключается в следующем.Пустые значения добавлены в список Python

Когда я запускаю код ниже, второй .append() добавляет пустой [] для первых двух итераций. Добавляются значения, которые я хочу добавить только на третьей итерации.

Может ли кто-нибудь сказать мне, что я делаю неправильно? Я искал форумы, но не могу найти ответ.

FYI: это только фрагмент, и некоторые из указанных строк могут поэтому казаться бессмысленными. Однако эта часть кода - это то, откуда происходят мои неправильные значения.

Ваша помощь очень ценится!

import urllib.request 
from bs4 import BeautifulSoup 
import csv 
bucket = [] 
stock = ['x','y','z'] 

soup = BeautifulSoup(htmltext) 

my_path = "C:\\my\\path" 

for i in stock: 
    htmlfile = urllib.request.urlopen(str("the-url-i-open" + i)) 
    htmltext = htmlfile.read() 
    bucket.append(str(i)) 
    bucket.append(soup.find_all(id=str("url-addition" + i))) 
+1

Ну, это звучит как первые два раза, когда вы запускаете 'soup.find_all (id = str (" url-addition "+ i))', он не находит то, что, по вашему мнению, находит. –

+0

Если это гарантировано, добавьте на третье, просто выполните, если добавить на третьей итерации. – FirebladeDan

+0

Меня озадачивает то, что это происходит, когда я изолирую отдельные предметы «запаса». По какой-то причине - как бы длинный список ни был - я всегда получаю последнее значение, напечатанное правильно. Это также означает, что я получаю только правильное значение на третьей итерации, если список состоит из трех элементов. – Rsyx

ответ

0

кажется, что ваш

soup.find_all 

не удается найти какой-либо идентификатор со строкой «URL-additionx» и «URL-additiony», поэтому вы получаете обратно пустой список.

+0

Это имеет смысл, за исключением того, что он вернет значение для y правильно, пока я не добавлю z. Если теперь я добавлю еще четвертое значение, третий не будет возвращен. – Rsyx

+0

Что произойдет, если вы удалите строку: htmlfile = urllib.request.urlopen (str ("the-url-i-open" + i)) htmltext = htmlfile.read() –

0

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

the soup = BeautifulSoup(htmltext) часть был проблема. Я прошел htmltext до BeautifulSoup, а затем попытался переопределить его позже. Тот факт, что я всегда видел значение последнего значения, скорее всего, связано с тем, что я перезапускал сценарий, и поэтому последнее значение было присвоено новой итерации.

Спасибо за комментарии!

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