table 解析在 python 中如何工作?除了那道漂亮的汤,还有什么简单的方法吗?

How does table parsing work in python? Is there an easy way other that beautiful soup?

我想了解如何使用漂亮的汤来提取网页上 table 中特定列下内容的 href link。例如考虑 link:http://en.wikipedia.org/wiki/List_of_Telugu_films_of_2015

在这个页面上 table 和 class wikitable 有一个列标题,我需要提取每个值后面的 href links在列标题下,并将它们放在 excel sheet 中。最好的方法是什么?我有点难以理解美丽的汤 table 解析文档。

您不必真的在树中导航,您可以简单地尝试查看是什么标识了这些行

就像在这个例子中一样,您要查找的 url 位于 table 和 class="wikitable" 中,因为 table 它们位于 align=center 的 td 标记中,现在我们的链接有了一些独特的标识,我们可以开始提取它们了。

但是你应该考虑到可能存在多个带​​有 class="wikitable" 的 table 和带有 align=center 的 td 标签,以防你想要第一个或第二个 table ,这取决于您的选择,您将不得不添加额外的过滤器。

用于从 table 中提取所有链接的代码应如下所示:

import urllib2

from bs4 import BeautifulSoup, SoupStrainer


content = urllib2.urlopen("http://en.wikipedia.org/wiki/List_of_Telugu_films_of_2015").read()  
filter_tag = SoupStrainer("table", {"class":"wikitable"})
soup = BeautifulSoup(content, parse_only=filter_tag)

links=[] 
for sp in soup.find_all(align="center"):
    a_tag = sp('a')
    if a_tag:
        links.append(a_tag[0].get('href'))

这里还有一点要注意,注意SoupStrainer的使用,它是用来指定一个过滤器来读取你要处理的内容,有助于加快处理速度,尽量不要使用parse_only 这一行的参数:
soup = BeautifulSoup(content, parse_only=filter_tag)
并注意差异。 (我注意到了,因为我的电脑没有那么强大)