2015-08-15 74 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