TroubleShooting

GuessedAtParserWarning: No parser was explicitly specified, so... 해결방법(BeaultifulSoup() 파서경고 해결하기!)

JackSmith 2023. 1. 21.

아래 코드는 bs4.py(라이브러리)파일에서 BeautifulSoup 관련해서 가져와서, 웹크롤링을 시도해본

기본적인 코드입니다.

 

from bs4 import BeautifulSoup

html_doc = """
<html><head><title>The Dormouse's story</title></head>

<p class="title"><b>The Dormouse's story</b></p>

<p class="story">Once upon a time there were three little sisters; and their names were
<a href="http://example.com/elsie" class="sister" id="link1">Elsie</a>,
<a href="http://example.com/lacie" class="sister" id="link2">Lacie</a> and
<a href="http://example.com/tillie" class="sister" id="link3">Tillie</a>;
and they lived at the bottom of a well.</p>

<p class="story">...</p>
"""

soup = BeautifulSoup(html_doc)

print("p : " , soup.p)

아래 코드를 PyCharm에서 실행(Shift + F10)해보면,  경고를 띄우게 됩니다.

에러가 아니라 경고이기 때문에, 결과가 정상적으로 뜨기는 하지만,,, 좀 신경이 쓰이니ㅎㅎ;;;

일단 경고가 않뜨게 수정을 시켜보면 아래와 같이 BeaultfiulSoup()함수에 인수를 하나 더 넣어주면 됩니다.

soup = BeautifulSoup(html_doc, "html.parser")

 

그러면 아래와 같이 정상적으로 작동하는 것을 알 수 있습니다.

오류가 해결되었으니, 이번에는 코드를 리뷰해보겠습니다.

bs4라는 라이브러리 파일은 기본적으로 웹에서 html문서(html_doc)를 긁어와서 해당 문서에서 자신이 원하는 내용을 찾거나 이를 가공하기 위해 사용하는 파일입니다.

위 예제코드에서는 html코드를 긁어와서 html_doc라는 변수에 저장하고, 긁어온 해당 문서, 즉 텍스트데이터들을

BeautifulSoup()에 넣고 나서(

soup = BeautifulSoup(html_doc, "html.parser")

), 이를 통해 문서 안에서 p태그가 포함하는 요소의 텍스트들을 긁어보는 코드였습니다.

print("p : " , soup.p)

 

이해가 되셨으면, 살짝만 응용을 해보겠습니다.

만약, b태그가 포함하는 요소의 텍스트들을 긁어서 출력해보고 싶다면, soup.p가 아니라 soup.b를 해주면 되겠죠?

댓글