2015-08-15 82 views
0

我一直在努力與美麗的湯和一個網頁。我想解析網頁中的特定表格,但是我遇到了問題。我的代碼如下:使用美麗的湯解析表

# -*- coding: cp1252 -*- 
import urllib2 

from bs4 import BeautifulSoup 

page =  urllib2.urlopen("http://www.snet.gob.sv/googlemaps/workstation/main.php").read() 
soup = BeautifulSoup(page) 


data = [] 
table = soup.find("table", { "class" : "mytable" }) 
table_body = table.find('tbody') 

rows = table_body.find_all('tr') 
for row in rows: 
    cols = row.find_all('td') 
    cols = [ele.text.strip() for ele in cols] 
    data.append([ele for ele in cols if ele]) # Get rid of empty values 

print data 

它適用於其他網頁,但不適用於此。我得到以下錯誤:

table_body = table.find('tbody') 
AttributeError: 'NoneType' object has no attribute 'find' 

它似乎沒有找到標籤「tbody」,但我已檢查,它在代碼中。另一個問題是,當它工作時(其他網頁),表格的每一項旁邊都會出現「u」。我搜查了很多,我找不到問題。謝謝你的幫助。

+0

這意味着在這裏_is_沒有一個mytable類的表。 – Rishav

+0

感謝您的回答@RishavKundu。我檢查了網頁,並且有一張「mytable」表。 – Ernesto561

回答

1

沒有,錯誤 -

AttributeError: 'NoneType' object has no attribute 'find' 

表明tableNone,這意味着功能 -

soup.find("table", { "class" : "mytable" }) 

返回None,這表明頁面沒有財產的任何表有價值的類 - mytable

你不能只是假設不同網頁上的html完全一樣(否則所有的網頁看起來都完全一樣)。

我檢查了網址,並且確實沒有該類的表格,在該特定頁面中沒有任何表格具有任何類別。您需要決定要查找哪張表並相應地給出條件。

+0

這很奇怪。我使用了該網址的檢查器,並且我想要解析該類的表是「mytable」。我不知道很多的HTML,可能這是我的問題。我會再檢查一次。謝謝。 – Ernesto561

+0

你能看到正確的課程嗎? –

+0

不,我被卡住了。我在Chrome中使用了檢查器工具,我得到的是「

」爲我想要的表格。再次感謝您的幫助@Anand S Kumar。 – Ernesto561