2012-11-13 5 views
1

나는 한 시간 동안 위의 질문을 열어 보았지만 여러 가지 해결책을 시도했지만 제대로 작동하지 않습니다. 웹 사이트에서 원하는 결과를 추출했습니다. 이제 원하는 특정 정보에 대해이 div를 채굴해야합니다. BeautifulSoup는 div 내의 데이터를 추출합니다

결과

은과 같이 분리된다 : 나는 그렇게하려면 어떻게

<div id="itembase29" class="result-item -result unselected clearfix even" data- 
part="fl_base" data-lat="51.9006" data-lon="-8.51008" data-number="29" 
is-local="true" data-customer="32060963" data-addrid="1" 
data-id="4b00fae498e3cc370133e8a14fd75160"> 
<div class="arrow"> 
</div> 

:

각 항목에 대한
items=soup.findAll(id=re.compile("itembase")) 

, 나는 HTML의이 작품에서 긴 위도 예를 들어 추출 할 ? 감사.

답변

2
  1. 아름다운 수프에 html 개체를 전달합니다.

    soup = BeautifulSoup(html) 
    
  2. div를 찾습니다.

    div = soup.div 
    
  3. 찾고있는 특성을 div에서 가져옵니다.

    lat, lon = div.attrs['data-lat'], div.attrs['data-lon'] 
    
  4. 인쇄.

>>> print lat, lon 
51.9006 -8.51008 
내가 명확성을 위해 거기에 .attrs 방법을 왼쪽,하지만 더 일반적인 용어로, 당신은 사전처럼 의 속성 어떤 요소에 액세스 할 수 있습니다, 당신도 정말 .attrs 방법이 필요하지 않습니다 , 이렇게 : div['data-lon']. 이 분명히 div s 목록을 통해 작동하지 않는다, 당신은 목록을 반복해야합니다.

for div in divs: 
    print div['data-lon'], div['data-lat'] 

또는 목록 이해.

[(div['data-lon'], div['data-lat']) for div in divs] 
+0

감사합니다. 이 항목이 적용됩니다 : soup = BeautifulSoup (str (item)) div = soup.div print div [ 'data-lon'], div [ 'data-lat'] – user578582