2016-07-03 3 views
1

Я изучаю веб-соскабливание с использованием python.как решить список индексов вне диапазона Python?

Вот мой первый код питона

# encoding=utf8 
import urllib2 
from bs4 import BeautifulSoup 


soup = BeautifulSoup(urllib2.urlopen("http://www.bcsfootball.org/").read(),"lxml") 

for row in soup("table", {'class': "mod-data"})[0].tbody("tr"): 
    tds = row('td') 
    print tds[0].string, tds[1].string 

Я получаю ошибку

/usr/bin/python2.7 /home/NewYork/PycharmProjects/untitled/News.py 
Traceback (most recent call last): 
    File "/home/NewYork/PycharmProjects/untitled/News.py", line 8, in <module> 
    for row in soup("table", {'class': "mod-data"})[0].tbody("tr"): 
IndexError: list index out of range 

Может кто-нибудь помочь мне, что я делаю неправильно?

И еще одна вещь, которую я хотел бы спросить ... пожалуйста, помогите мне понять, что происходит здесь точно ...

for row in soup("table", {'class': "mod-data"})[0].tbody("tr"): 

Спасибо !! :)

+1

Обучение веб-соскоб с помощью Python все хорошо, но вы также должны научиться Python сами по себе, или вы будете зацикливаться на сообщения об ошибках, как это. Этот конкретный означает, что список, возвращенный вызовом 'soup()', был пустым и, следовательно, не имеет первого элемента. – TigerhawkT3

+0

Ошибка вашего супа: UnicodeEncodeError: кодек ascii не может кодировать символ '\ xa0' в позиции 10082: порядковый номер не в диапазоне (128) – min2bro

+0

unicode literal..utf-8 encoding – min2bro

ответ

0

Это даст вам ожидаемый результат:

import urllib2 
from bs4 import BeautifulSoup 


soup = BeautifulSoup(urllib2.urlopen("http://www.bcsfootball.org").read(),"html") 

welcome = soup("div", {'class': "col-full"})[1] # we know it's index 1 


for item in welcome: 
    print item.string 
1

Сообщение об ошибке означает, что soup("table", {'class': "mod-data"}) - это пустой список, но вы хотите получить первый элемент в этом списке.

Вы должны убедиться, что элемент table имеет узел с использованием класса "mod-data".

+0

проверено сейчас, что его нет ... но что будет выражением тегов в вышеприведенном коде, если я хочу извлечь приветственный параграф с сайта? – Kate

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