【问题标题】:Parsing a table using Beautiful soup使用 Beautiful soup 解析表格
【发布时间】:2015-11-08 09:29:21
【问题描述】:

我一直在为 Beautiful Soup 和一个网页而苦苦挣扎。我想解析网页中的特定表格,但我遇到了问题。我的代码如下:

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

【问题讨论】:

  • 表示没有类为mytable的表。
  • 感谢您的回答@RishavKundu。我检查了网页,有一个“mytable”类的表格。

标签: python web web-scraping beautifulsoup


【解决方案1】:

不,错误-

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

表示tableNone,表示函数-

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

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

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

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

【讨论】:

  • 这很奇怪。我对那个 url 使用了检查器,而我想解析的表是“mytable”。我不太了解html,这可能是我的问题。我会再检查一次。谢谢。
  • 不,我被卡住了。我在 chrome 中使用了检查器工具,得到的是 "" 用于我想要的表格。再次感谢您的帮助@Anand S Kumar。
  • 我解决了我的问题。正如您所指出的,当您查看源代码时,没有该类的表,尽管当您在 Firefox 中使用检查器时它会出现。我在 Firefox 的检查器中使用“网络”选项卡找到了指向该表的链接。
猜你喜欢
  • 2014-12-16
  • 1970-01-01
  • 2023-03-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多