Python Beautiful Soup анализирует кодированную таблицу UTF-8 (с использованием механизма)

Я пытаюсь разобрать следующую таблицу, закодированную в UTF-8 (это ее часть):

<table cellspacing="0" cellpadding="3" border="0" id="ctl00_SPWebPartManager1_g_c001c0d9_0cb8_4b0f_b75a_7cc3b6f7d790_ctl00_HistoryData1_gridHistoryData_DataGrid1" style="width:100%;border-collapse:collapse;">
                            <tr class="gridHeader" valign="top">
                                <td class="titleGridRegNoB" align="center" valign="top"><span dir=RTL>שווי שוק (אלפי ש"ח)</span></td><td class="titleGridReg" align="center" valign="top">הון רשום למסחר</td><td class="titleGridReg" align="center" valign="top">שער נמוך</td><td class="titleGridReg" align="center" valign="top">שער גבוה</td><td class="titleGridReg" align="center" valign="top">שער בסיס</td><td class="titleGridReg" align="center" valign="top">שער פתיחה</td><td class="titleGridReg" align="center" valign="top"><span dir="rtl">שער נעילה (באגורות)</span>    
</td><td class="titleGridReg" align="center" valign="top">שער נעילה מתואם</td><td class="titleGridReg" align="center" valign="top">תאריך</td>
                            </tr><tr onmouseover="this.style.backgroundColor='#FDF1D7'" onmouseout="this.style.backgroundColor='#ffffff'">

Мой код:

html = br.response().read().decode('utf-8')
soup = BeautifulSoup(html)

table_id = "ctl00_SPWebPartManager1_g_c001c0d9_0cb8_4b0f_b75a_7cc3b6f7d790_ctl00_HistoryData1_gridHistoryData_DataGrid1"
table = soup.findall("table", id=table_id)

И я получаю следующую ошибку:

TypeError: 'NoneType' object is not callable

person erantdo    schedule 25.10.2013    source источник
comment
Эй, можешь показать полную трассировку?   -  person aIKid    schedule 25.10.2013
comment
Текущий код находится по адресу: dpaste.de/w6cV   -  person erantdo    schedule 25.10.2013
comment
@alKid Извините, но что вы подразумеваете под полной трассировкой?   -  person erantdo    schedule 25.10.2013
comment
Вся полная трассировка. Или это единственное, что выскочило при выполнении скрипта?   -  person aIKid    schedule 25.10.2013
comment
@alKid, да. Проблемная строка table = soup.findall("table", id=table_id). Я изменил его на table = soup.find(id=table_id) в соответствии с @GamesBrainiac, и теперь он возвращает None   -  person erantdo    schedule 25.10.2013
comment
@erantdo По какой-то причине мы не можем получить к нему доступ, URL. По крайней мере, я не могу.   -  person Games Brainiac    schedule 25.10.2013
comment
@GamesBrainiac dpaste.de/Nb4b - Я создал новый, поможет?   -  person erantdo    schedule 25.10.2013
comment
Мне отказывают в доступе. Я получаю You don't have permission to access "http://www.tase.co.il/Heb/General/Company/Pages/companyHistoryData.aspx?" on this server.   -  person Games Brainiac    schedule 25.10.2013
comment
@GamesBrainiac О, вы имели в виду URL-адрес TAES. Поможет ли мне вставить исходный код HTML в dpaste.de?   -  person erantdo    schedule 25.10.2013
comment
@erantdo Ну нет, потому что это то, что ты только что сделал, верно?   -  person Games Brainiac    schedule 25.10.2013
comment
@GamesBrainiac вот он: dpaste.de/EWCK - и, если я забыл - большое спасибо за попытку помогать !!   -  person erantdo    schedule 25.10.2013


Ответы (1)


Поскольку вы просто находите с помощью id, вы можете просто использовать id и ничего больше, потому что id уникальны:

ОБНОВИТЬ

Используя вашу пасту:

# encoding=utf-8
from bs4 import BeautifulSoup
import requests

data = requests.get('https://dpaste.de/EWCK/raw/')
soup = BeautifulSoup(data.text)
print soup.find("table",
                id="ctl00_SPWebPartManager1_g_c001c0d9_0cb8_4b0f_b75a_7cc3b6f7d790_ctl00_HistoryData1_gridHistoryData_DataGrid1")

Я использую запросы python для получения данных с веб-страницы, это так же, как вы пытаетесь получить данные. Приведенный выше код работает, и дается правильный идентификатор. Попробуйте это для разнообразия, не используйте .decode('utf-8'), вместо этого просто используйте br.response().read().

person Games Brainiac    schedule 25.10.2013
comment
Спасибо, но теперь он возвращает None - person erantdo; 25.10.2013
comment
@erantdo Странно, на моем компьютере все работает нормально, это потому что ты используешь навес? Попробуйте запустить это с помощью обычного python. - person Games Brainiac; 25.10.2013
comment
@aIKid Как это не так? - person Games Brainiac; 25.10.2013
comment
@erantdo Думаю, я знаю, в чем проблема: когда вы кодируете это в ASCII, происходит то, что вы получаете много косых черт. Это портит синтаксический анализ BeautifulSoup. - person Games Brainiac; 25.10.2013
comment
@GamesBrainiac Я не понимаю. Я удалил .decode, и он все еще возвращает None. Если вы советуете мне использовать requests, то у меня с этим проблемы, поэтому я использую mechanize - person erantdo; 25.10.2013
comment
Используйте механизацию, оставьте все как есть, просто удалите часть декодирования. - person Games Brainiac; 25.10.2013
comment
@GamesBrainiac Извините, но он возвращает None... код находится по адресу: dpaste.de/DrdD - person erantdo; 25.10.2013
comment
@erantdo Тогда у меня действительно нет идей, так как у меня нет доступа к вашей стороне, поэтому я ничего не вижу для себя. - person Games Brainiac; 25.10.2013