2016-07-18 2 views
1

Я пытаюсь написать код, который очистит финансовые данные из Интернета, а затем представит его в виде таблицы в таблице. Проблема, с которой я сталкиваюсь, заключается в том, что я продолжаю возвращать ошибку, которая говорит: AttributeError: объект ResultSet не имеет атрибута 'findAll' Я понятия не имею, почему он продолжает возвращать это, я пробовал много вещей, чтобы избавиться от ошибки, но он просто продолжает возвращаться. Я надеялся, что некоторые здесь смогут пролить свет на ситуацию. Мой код выглядит следующим образом:AttributeError: объект 'Resultset' не имеет атрибута 'findAll

import urllib2 

    from bs4 import BeautifulSoup 

    Goog_page = 'https://uk.finance.yahoo.com/q/hp?s=GOOG' 

    page = urllib2.urlopen(Goog_page) 

    html = page.read() 

    soup = BeautifulSoup(html, "lxml") 

    soup.prettify().encode('UTF-8') 

    #print soup.findAll('table') 

    right_table = soup.find_all('table', {'class':'yfnc_datamodoutline1'}) 




    A=[] 
    B=[] 
    C=[] 
    D=[] 
    E=[] 
    F=[] 
    G=[] 
    H=[] 
    I=[] 
    J=[] 

    def parse_string(el): 
     text = ''.join(el.findAll(text=True)) 
     return text.strip() 
    for rows in right_table: 
     rows = map(parse_string, right_table.findAll('tr')) 
     for cell in rows: 
      data = map(parse_string, rows.findAll('td')) 
      if len(data)>1: 
        A.append(data[0].find(text=True)) 
        B.append(data[1].find(text=True)) 
        C.append(data[2].find(text=True)) 
        D.append(data[3].find(text=True)) 
        E.append(data[4].find(text=True)) 
        F.append(data[5].find(text=True)) 
        G.append(data[6].find(text=True)) 
        H.append(data[7].find(text=True)) 
        I.append(data[8].find(text=True)) 
        J.append(data[9].find(text=True)) 

Я получаю ошибку Спинка: Файл «...», строка 37, в строках = right_table.findAll („Tr“), а затем сообщение об ошибке печатается.

Я использую Python 2.7 и 8.1 окна

Заранее спасибо за помощь!

+0

Возможный дубликат [Beautiful Soup: объект «Resultset» не имеет атрибута «найти \ _all '?] (http://stackoverflow.com/questions/24108507/beautiful-soup-resultset-object-has-no-attribute-find-all) –

+0

Хорошо, круто, спасибо. Я проверю это! –

ответ

0

В этом разделе кода:

data = map(parse_string, rows.findAll('td')) 
if len(data)>1: 

Вам необходимо либо использовать for цикл, чтобы пройти через ваш data объект или использовать rows.find('td') вместо findAll, если у вас есть только один td элемент.

Например, если вы хотите, чтобы получить текст для каждого <td> и добавить его в список вы можете:

data = [] 
for row in right_table: 
    tablecells = row.findAll('td') 
    for cell in tablecells: 
     data.append(row.get_text().strip()) 
+0

Yeh, что имеет смысл. Я думал, что, возможно, проблема в том, что я пытаюсь использовать вторую команду findAll для поиска по списку ... есть ли все-таки вытащить все элементы «td» в списке? –

+0

Я добавил фрагмент, который должен добавить ячейки в список – jinksPadlock

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