2017-10-10 9 views
0

아마존의 HTML 테이블에서 div 클래스를 파싱하려고하는데, 코드를 실행할 때 find_all()은 내가 찾고있는 div 클래스를 반환 할 때가 있고 빈 상태 (empty)의리스트를 돌려줍니다. 결과가 왜 다른지에 대한 아이디어가 있습니까? 나는이 URL에서 당기는하고아름다운 스프 찾기 findall이 다른 결과를 반환합니다.

: https://www.amazon.com/dp/B0767653BK

내 코드 :

req = requests.get('https://www.amazon.com/dp/B0767653BK') 
page = req.text 
BSoup = BeautifulSoup(page, 'html.parser') 
divClass = Bsoup.find_all('div', class_='a-section a-spacing-none a-padding-none overflow_ellipsis') 
+0

아마도 div 클래스가 동적으로 변경됩니다. – RomanPerekhrest

답변

0

CSS 클래스의 조합으로 모든 요소를 ​​찾으려고 할 때 BeautifulSoup로 선택기를 사용하는 것이 좋습니다 :

from bs4 import BeautifulSoup 
import requests 

req = requests.get('https://www.amazon.com/dp/B0767653BK') 
soup = BeautifulSoup(req.text, 'html.parser') 

for div_class in soup.select('div.a-section.a-spacing-none.a-padding-none.overflow_ellipsis'): 
    print div_class.get_text(strip=True) 

이것은 네 개의 클래스 요소가 임의의 순서로 존재할 수 있으므로 바람직합니다. 따라서 페이지가 클래스의 순서를 변경하기로 결정하면 여전히 클래스를 찾습니다.

문서에서 Searching by CSS class을 살펴보십시오.