2012-03-22 5 views
2

"text"속성을 사용하여 BeautifulSoup을 사용하여 HTML에 포함 된 일부 텍스트를 구문 분석하려고합니다. 나는 이상한 뭔가를 발견하고이 방식으로 동작하는 이유 주위에 내 머리를 얻을 수 없다 "findall은"을 "발견"과 함께 주변에 재생 ... 두 번째 테스트에서Python BeautifulSoup - find와 findAll을 사용한 다른 결과

import re 
import BeautifulSoup 

doc = "<html><head><title>Page title</title><title>Author name</title></head>" 
soup = BeautifulSoup(doc) 

# find test 
test1 = soup1.find('title',text=re.compile("Page")) 
print test1 # Returns "Page title" 

# findAll test 
test2 = soup1.findAll('title',text=re.compile("Page")) 
print test2 # Returns "[<title>Page title</title>, <title>Author name</title>]" 

, 파서는 반환하지합니다 첫 번째 예제와 동일한 결과가 나타 납니까? 두 번째 테스트는 텍스트에 "Page"가 포함 된 모든 'title'태그를 반환해야하지만 두 번째 title 태그도 반환합니다.

이게 예상 되었습니까, 아니면 누락 되었습니까?

답변

0

The documentationtextname 인수가 상호 배타적임을 나타냅니다. 하지만, text이 지정되면 name은 무시됩니다. 귀하의 경우에는 그 반대입니다.

BeautifulSoup로 3.2.0에서 예상대로 작동
+0

내가 이것을 볼 않았다 find를 사용하는 데는 문제가 없었지만 아마도 문서의 오타가있을 수 있습니다. – JasonB

0

:

>>> soup.find('title',text=re.compile("Page")) 
u'Page title' 
>>> soup.findAll('title',text=re.compile("Page")) 
[u'Page title'] 
-1

BeautifulSoup로 문서에 그 정의에 의해 입증이 두 기능은 매우 유사합니다

find_All(tag, attributes, recursive, text, limit, keywords) 

find(tag, attributes, recursive, text, keywords) 
관련 문제