2016-11-27 1 views
0

나는 파이썬 웹 스raping을 사용하여 파이썬에서 아름다운 수프를 사용하여 정보를 추출하려고합니다. 다음은 섹션입니다.python을 사용하여 값 오류 추출하기 beautifulsoup 웹 스크래핑

<div class="result-value" data-reactid=".0.0.3.0.0.3.$0.1.1"> 
<span data-reactid=".0.0.3.0.0.3.$0.1.1.0">1.1</span> 
<span class="result-value-unit" data-reactid=".0.0.3.0.0.3.$0.1.1.1">MB</span> 
</div> 

내가 사용하고있는 코드의

부분이 1.1 값을 얻으려면이

try: 
    Area =soup.select(".result-value span") 

    print Area 

except StandardError as e: 
    converted_date="Error was {0}".format(e) 
    print converted_date 

결과 메신저

[] 

무엇이 잘못 될 수있다지고있다?

+0

여기에 새로운 stackoverflow. 미안해 내가 표준을 따르지 않는다면. 나는이 플랫폼에서 따라야하는 표준 절차를 읽고있다. 아무도 귀찮게하지 않기를 바란다. – info

+0

'soup.select'가 당신이 지정한대로 아무것도 찾지 못한다면, 그냥 빈 목록'[]'을 반환 할 것이다. 따라서'try ... except'는이 경우 어떠한 에러도 포착하지 못할 수도 있습니다. – mikeqfu

+0

왜 거기에 가치를 포착하지 않는지 알고 있습니까? im은 bs4 매뉴얼을 따라 간다. – info

답변

0

당신이 data-reactid의 가치를 알고 가정하면, 다음과 같이 올바른 요소를 얻을 수 있습니다 :

soup.findAll("span", {"data-reactid": ".0.0.3.0.0.3.$0.1.1.0"}) 
+0

여전히 [] 출력은 – info

+0

이고 예 data-reactid 값을 알고 있습니다 – info

+0

실제로 소스 코드가로드되어 있는지 확인할 수 있습니까? 인쇄 (soup.prettify()) –

0

다시 soup.find('span', {'data-reactid': '.0.0.3.0.0.3.$0.1.1.0'}).text 일 경우, 코드가 오류 메시지를 반환하지 않습니다. 최소한 try...except... 기능이 작동 중임을 나타내는 결과 메시지가 나타납니다. 문제가 htmlfile에 있으며 str이 아닌 bytes이어야합니다. 다음과 같이 코드를 조금 수정하면 좋을 것입니다 :

from urllib.request import urlopen 

htmlfile = urlopen(url).read().decode('utf-8') # if errors occur here, try: htmlfile = urlopen(url).read().decode('utf-8', errors='ignore') 

soup = BeautifulSoup(htmlfile, 'lxml') 

그런 다음 나머지 부분은 계속 진행하십시오.

관련 문제