2017-11-22 1 views
1

이 코드를 실행하면 매번 다른 순서로 속성이 나타납니다. 아무도 이유를 아나요?BeautifulSoup가 결정적이지 않습니까?

나는 BeautifulSoup 랜덤/비 결정적 검색을 시도했지만 아무 것도 찾을 수 없습니다.

from bs4 import BeautifulSoup 
html = """ 
<span class="pb-byline" itemprop="author" itemscope="" 
itemtype="http://schema.org/Person">By 
<a href="https://www.washingtonpost.com/people/joe-bloggs/"> 
<span itemprop="name">Joe Bloggs</span></a></span> 
""" 

soup = BeautifulSoup(html, "lxml") 
find_span = soup.find('span') 
print(find_span.attrs) 

이제 알겠지만 정렬 할 수는 있지만 매우 이해하기 쉽습니다.

답변

2

find_span.attrs에 액세스하면 dictionary에 액세스하고 있습니다. 여기에는 이없고 순서가 있으므로 prints의 순서는 논리적이지 않습니다.

dictionary은 단지 key : value 쌍입니다. 암시 적 순서는 없습니다. 각 key은 항상 해당 value을 제공합니다. 따라서 printing은이 pairs이 임의의 순서로 제공 될 수 있음을 의미합니다.

+0

나는 추측 할 만하다. 여전히 결정적이지 않다는 것이 이상하게 보인다. –

+0

@TroyWray 글쎄, 내가 여러 번 코드를 시도 할 때마다 * 동일한 출력을 제공하므로 어쩌면 약간 다른 데이터를 사용할 것입니다. –

+0

PyCharm에서 정확히 동일한 코드를 실행하고 있습니다 (3.5로 설정 됨). .1) 여러 번 그리고 다른 순서를 얻는 것. 분명히 매회는 아니지만 쉽게 다른 순서를 제공합니다. –

관련 문제