BeautifulSoup next_sibling返回None

时间:2015-12-09 06:47:29

标签: python html beautifulsoup

出于某种原因,即使我能清楚地看到html中的兄弟,item.next_sibling也会返回None。 (item.next_sibling.next_sibling是我想要做的,但它因为tag.next_sibling为None而给我一个错误)。为什么会这样?

我遇到这个问题的html是从电影中的维基百科页面2015中抓取电影及其信息列表。 https://en.wikipedia.org/wiki/2015_in_film

我的代码适用于所有电影,除了The Hateful Eight,我在兄弟姐妹中获得无。一个next_sibling应该返回空格,两个应该返回' The Weinstein Company'

Object

我使用维基百科python库,但我不相信有办法从表中获取信息,因此我使用它来获取html,然后运行上面的内容。

1 个答案:

答案 0 :(得分:1)

item.parent.next_sibling.next_sibling将返回标记,然后您可以从中获取该名称。我无法在The Hateful Eight中再现你的失败。

这适用于Python 3.3:

url = "https://en.wikipedia.org/wiki/2015_in_film"
html = urllib.request.urlopen(url).read()
soup = BeautifulSoup(html)

titles = soup.find_all('tr')
for tag in titles:
    for item in tag.find_all('i'):
        if item.a and item.parent.parent.li == None and item.parent.attrs == {}:
            print(item.a.text)
            print(item.parent.next_sibling.next_sibling.text)

产地:

.....
Point Break
Warner Bros. / Lionsgate
The Hateful Eight
The Weinstein Company
The Revenant
20th Century Fox / Regency Enterprises / RatPac Entertainment