我一直在与美丽的汤和网页挣扎。我想从网页解析一个特定的表,但我遇到了问题。我的代码如下:
# -*- 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 :(得分:1)
不,错误 -
AttributeError: 'NoneType' object has no attribute 'find'
表示table
为None
,表示函数 -
soup.find("table", { "class" : "mytable" })
返回None
,表示该页面没有任何具有值为mytable
的属性类的表。
您不能只假设不同网页上的html完全相同(否则所有网页看起来都完全相同)。
我检查了网址,并且确实没有该类的表,在该特定页面中没有任何表格。您需要决定要查找哪个表并相应地给出条件。