【问题标题】:BS doesn't "see" all tables?BS 没有“看到”所有表格?
【发布时间】:2012-08-01 20:56:10
【问题描述】:

我正在使用 BeautifulSoup 来解析棒球参考网站上的数据,它适用于每个页面,除了像 this one 这样的少数页面,相同的页面(不同的数据)可以完美地工作,即 this one。 我正在尝试过滤掉以“stats_table”作为类之一的表。我使用此代码:

bs = BeautifulSoup(stream, 'lxml', parse_only=SoupStrainer('table'))

然后我做某事:

for table in bs.find_all('table'):
     print table.attrs
       ... bla bla...

很明显,在 table.attrs 中,这段代码没有看到击球台和投球台,而且它们在那里......我重复一遍:相同的代码几乎适用于所有其他类似页面。 查看 str(bs) 清楚地表明

有什么想法吗?

【问题讨论】:

  • 你能解释一下你所说的击球台是什么意思吗?哪些你没有看到,我看到的是TorontoBlueJaysbatting 和其他人?
  • 是的,没错……两者都没有被检测到,也没有被检测到。我现在在萤火虫中打开了页面,它似乎有错误......关于如何自动修复它们的任何想法?流浪的头端标签似乎是问题,但我不知道如何准确修复它

标签: python parsing html-parsing beautifulsoup


【解决方案1】:

正如您在 cmets 中发布的那样,页面上有错误。你应该使用 HTML Tidy 来清理它:http://pypi.python.org/pypi/pytidylib/0.2.1

您可以在工作中查看 HTML Tidy:http://validator.w3.org/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多