与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'>
我如何只选择第一个方框而不是选择方框?
由于
答案 0 :(得分:1)
BeautifulSoup
有special 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