2017-12-22 11 views
1

하나의 웹 페이지에서 데이터를 긁어 내고 싶습니다. 내 코드는 다음과 같습니다 결과BeautifulSoup로 데이터를 가져 오는 방법

grad = s.get('https://www.njuskalo.hr/prodaja-kuca/zagreb',headers=header, proxies=proxyDict) 
city_soup = BeautifulSoup(grad.text, "lxml") 
kvarts = city_soup.find_all(id="locationId_level_1") 
print kvarts[0] 
print "++++++++++++++++++++++=" 

for kvart in kvarts[0]: 
    print kvart 

내가 얻을 : 거기에서

<option data-url-alias="/brezovica" value="1247">Brezovica</option> 
<option data-url-alias="/crnomerec" value="1248">Črnomerec</option> 
<option data-url-alias="/donja-dubrava" value="1249">Donja Dubrava</option> 

내가 데이터 URL-별칭과 가치를 추출 할 필요가있다. 어떻게 그럴 수 있습니까?

+0

사용하는 기본 문자열 조작 (또는 디폴트 값을 설정할 수 있습니다)? 또는 쉽게 정규식을 사용하십시오 –

+0

[documentation] (https://www.crummy.com/software/BeautifulSoup/bs4/doc/#attributes)를 참조하십시오. – Galen

답변

4

bs4은 태그 속성을 사전에 저장하여 이름으로 선택할 수 있도록합니다. 코멘트에 Evyatar MEGED에서 언급 한 바와 같이 키가 존재하지 않는 경우

for kvart in kvarts[0].find_all('option'): 
    print kvart['data-url-alias'], kvart['value'] 

이는 KeyError을 올릴 것이다, 그래서 당신은 그것이 .get 방법을 사용하여 확실하지 않은 경우.

for kvart in kvarts[0].find_all('option'): 
    print kvart.get('data-url-alias'), kvart.get('value') 

dict.get 반환 None 키가 존재하지 않는 경우

+0

'KeyError'가 발생하지 않도록'.get '을 사용하면 더 좋을 것 같습니다. 여전히 +1 –

+0

@EvyatarMeged 당신은 절대적으로 옳습니다, 나는 업데이트 할 것입니다. –