在美丽的汤中隔离div

时间:2015-03-13 14:59:09

标签: python beautifulsoup

与BeautifulSoup和Python有轻微问题。

我试图隔离

中的标题
 < a href="">TITLE<?/a>

我使用的代码是:

for box in soup ('div', {'class': 'box'}):
    for a in box.findnext('a'):
       print a

这完全有效,但有一个div导致问题。通常的一个是:

<div class='box'>

尴尬的是:

<div class='box sponsored'>

我如何只选择第一个方框而不是选择方框?

由于

1 个答案:

答案 0 :(得分:1)

BeautifulSoupspecial handling for the class attribute

  

请记住,单个标记的“类”可以有多个值   属性。当您搜索与某个CSS类匹配的标记时,   你正在匹配任何CSS类。

使用单个BeautifulSoup类强制div查看box元素的一种方法是使用以下CSS selector

soup.select('div[class=box]')

演示:

>>> from bs4 import BeautifulSoup
>>> 
>>> data = """
... <div class='box'>
...     test1
... </div>
... <div class='box sponsored'>
...     test2
... </div>
... """
>>> 
>>> soup = BeautifulSoup(data, 'html')
>>> 
>>> for div in soup.select('div[class=box]'):
...     print div.text.strip()
... 
test1