美丽的汤4 CSS兄弟选择器

时间:2014-03-17 21:35:47

标签: python python-2.7 beautifulsoup

我正在尝试使用Beatiful Soup 4 abd Python 2.7解析从InDesign文档导出的一些HTML。我试图通过使用CSS兄弟选择器找到一个特定的标签。我可以通过CSS选择器选择其兄弟,然后使用Beautiful Soup find_next_sibling()方法来访问我想要的标签,但我无法通过CSS选择器直接选择它。

我已经验证了当我在纯CSS / JS(http://jsfiddle.net/Sj63x/1/)中尝试时,选择器本身是有效的。我也试过使用Beautiful Soup主页上推荐的所有三种解析器。

相关代码发布在下面(文字在JS小提琴中):

text = BeautifulSoup(text)

'''this finds the sibling'''
sibling = text.select(".Book-Title-") 
print(sibling[0].string)

'''this finds the sibling I am looking for'''
targetText = sibling[0].find_next_sibling()
print(targetText.string)

'''This should find the same text but returns an empty list'''
targetText2 = text.select(".Book-Title- ~.Text")
print(targetText2)

'''Other attempted variations - also return empty lists'''
targetText3 = text.select(".Book-Title- ~ .Text")
targetText4 = text.select(".Book-Title- + .Text")

1 个答案:

答案 0 :(得分:3)

请尝试使用此选择器:

targetText2 = text.select(".Book-Title- + .Text")

或在波形符和兄弟之间添加一个空格:

targetText2 = text.select(".Book-Title- ~ .Text")