2016-01-07 2 views
1

Я занимаюсь с beautifulsoup, и я пытаюсь, чтобы код изолировал ссылки, найденные на странице, а затем извлекал их. Моя строка «print (link.get (« href »))» печатает весь список ссылок, поэтому эта часть работает. То, с чем я борюсь, теперь может сохранить список в массив, чтобы я мог играть с данными. В этом примере Iam пытается напечатать 5-й элемент в списке.Добавление данных в массив Python дает ошибку

Ошибки я получаю "IndexError: индекс присваивания списка из диапазона"

Ниже приведен код:

import requests 
from bs4 import BeautifulSoup 

i=0 
array1 = [] 
r = requests.get("http://www.yellowpages.ca/bus/Quebec/Rimouski/Walmart/8139565.html") 
var = r.content 

soup= BeautifulSoup(var) 

soup.find_all("a") 
for link in soup.find_all("a"): 
    print (link.get("href")) 
    array1[i+1] = link.get("href") 

print (array1(5)) 

Спасибо.

Использование Python 3.4 и BS4

+1

Вы получаете ошибку, потому что второй элемент массива не существует, и вы пытаетесь добавить его в неправильном пути. Измените 'array1 [i + 1] = link.get (" href ")' на 'array1.append (link.get (" href "))' и все будет хорошо. – brittenb

+0

спасибо, Бриттенб, это сработало !! – LearnIT

+0

можете ли вы разместить его в качестве ответа, поэтому я могу отметить ответ на этот вопрос – LearnIT

ответ

2

Причина вы получаете ошибку потому, что второй элемент массива не существует. Поэтому, когда вы пытаетесь индексировать массив, назначая второму элементу (помните, что индексация Python начинается с 0), Python сообщает вам, что этот элемент не существует и он останавливается. Чтобы исправить это, мы должны соответствующим образом добавить наши данные. Мы можем сделать это, просто изменив array1[i+1] = link.get("href") на array1.append(link.get("href")).

1

Вы также можете использовать список понимание:

array1 = [link.get('href') for link in soup.find_all('a')]

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