본문 바로가기
Programming/Python

BeautifulSoup 파싱이 뭔가 이상하다

by NAMP 2019. 6. 7.

BeautifulSoup 파싱이 뭔가 이상하다

문제

크롬에서 개발자 도구로 보면 분명히 html 요소가 있는데, BeautifulSoup를 사용해서 가져오면 None 으로 나옵니다.

코드는 아래와 같습니다.

def get_bs(url):
    req = requests.get(url)
    html = req.text
    bs = BeautifulSoup(html, "html.parser")
    return bs

원인

여러가지로 시도하다가 Postman으로 테스트하면서 이유를 알게되었습니다.

html 중 922번째 줄에서, 에러가 발생하였고 이로 인해 파싱이 제대로 되지 않았습니다. 그래서 뒤이어서 나와야 하는 정보들은 아래와 같이 변경되면서 사리지게 되었습니다.

<div style="font-size:11px; text-align:left">
<i class="fa fa-chevron-circle-right" style="color:#B8B8B8"></i>
<span><b> 스키 장터</b></span></div>

해결

파서를 html5lib로 변경합니다.

파서들의 장점은 다음과 같습니다.

  • html.parser : 내장, 추가 설치가 필요없음
  • html5lib : 가장 관대함(오류에 대해서), HTML이 깨진경우 사용
  • lxml : 가장 빠름

먼저 html5lib를 설치하고

$ pip install html5lib

파서를 변경합니다.

def get_bs(self, url):
    req = requests.get(url)
    html = req.text
    bs = BeautifulSoup(html, "html5lib")
    return bs

이후 정상적으로 파싱이 되는 것을 확인할 수 있습니다.

참고

'Programming > Python' 카테고리의 다른 글

requests - 프록시 서버 이용  (0) 2020.09.16
Jupyter Lab CSS 변경  (0) 2019.07.03
FTP file upload  (0) 2018.11.07
Jupyter lab 에 익스텐션 설치하기  (0) 2018.11.06
Amazfit Bip Font Creator 5 - 실행 파일 생성  (0) 2018.05.15

댓글