用美丽的汤解析一张桌子

时间:2015-08-15 04:56:55

标签: python web web-scraping beautifulsoup

我一直在与美丽的汤和网页挣扎。我想从网页解析一个特定的表,但我遇到了问题。我的代码如下:

# -*- 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”。我搜索了很多,但我找不到问题。谢谢你的帮助。

1 个答案:

答案 0 :(得分:1)

不,错误 -

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

表示tableNone,表示函数 -

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

返回None,表示该页面没有任何具有值为mytable的属性类的表。

您不能只假设不同网页上的html完全相同(否则所有网页看起来都完全相同)。

我检查了网址,并且确实没有该类的表,在该特定页面中没有任何表格。您需要决定要查找哪个表并相应地给出条件。