Cộng đồng Hỏi & Đáp của Inflearn
html 읽기 오류
Đã giải quyết
Viết
·
79
1
10:50 jupyter Line 41 대로 실행했는데 아래와 같이 에러가 발생하였습니다.
HTTPError Traceback (most recent call last)
Cell In[13], line 4
1 url = 'https://en.wikipedia.org/wiki/List_of_countries_and_dependencies_by_population'
3 # Read the HTML tables into a list of DataFrames
----> 4 tables = pd.read_html(url)
6 print(f"Number of tables found: {len(tables)}")
8 print(tables[1].head())
url이나 라이브러리 설치문제는 아닌것 같고 gpt에 물어보니 wiki서버 차단정책문제라고 나오는데 확실한지 궁금합니다.
맞다면 영상수정이 필요할것 같구요
Quiz
데이터 과학 작업 시, 표준 파이썬 대신 Anaconda를 사용하는 주된 이유는 무엇일까요?
코드 실행 속도가 더 빠르기 때문입니다.
데이터 과학 관련 패키지와 환경 관리가 용이하기 때문입니다.
웹 개발에 특화된 라이브러리를 더 많이 제공하기 때문입니다.
메모리 사용량이 훨씬 적기 때문입니다.
Câu trả lời 2
0
안녕하세요 dlclxkzk87님,
네, 위키 서버(정확히는 Wikimedia) 쪽의 User-Agent/봇 차단 정책 때문에 pd.read_html(url)이 HTTPError를 낼 수 있다는 설명은 꽤 확실합니다. 특히 요즘은 더 엄격해져서, User-Agent가 없거나 너무 기본값/자동화처럼 보이면 403(Forbidden) 을 주는 경우가 흔해요.
Wikimedia 자체 정책 문서에도 User-Agent 헤더가 없거나 빈/일반적인 값이면 403이 날 수 있다고 명시돼 있습니다
해결 방법으로는 다음과 같이 사용하시면 잘 될 겁니다. 이 방식은 User-Agent를 명시해서 차단될 확률을 크게 줄여줍니다.
import pandas as pd
import requests
# Sample URL containing an HTML table
url = 'https://en.wikipedia.org/wiki/List_of_countries_and_dependencies_by_population'
headers = {
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X) AppleWebKit/537.36 (KHTML, like Gecko) Chrome Safari"
}
resp = requests.get(url, headers=headers, timeout=30)
resp.raise_for_status()
# Read the HTML tables into a list of DataFrames
tables = pd.read_html(resp.text)
# Check the number of tables found
print(f"Number of tables found: {len(tables)}")
# Print the first table (usually the one of interest)
print(tables[1].head())
0
안녕하세요, 인프런 AI 인턴입니다. dlclxkzk87님.
pd.read_html(url)을 통해 웹페이지에서 HTML 테이블을 읽어오려는 시도가 있습니다. 현재 발생하고 있는 HTTPError는 종종 웹사이트가 특정 봇이나 프로그램의 접근을 차단할 때 나타날 수 있습니다. 구체적으로, 여러 웹사이트들이 데이터 스크래핑을 방지하기 위해 사용자 에이전트를 요구할 수도 있습니다.
하지만 이 문제는 다양한 이유로 발생할 수 있으며, 몇 가지 해결 방법을 제시 드리겠습니다:
- 사용자 에이전트 설정: 웹사이트는 가끔 스크래핑 시도를 차단하는 옵션을 가지고 있습니다. 이를 피하기 위해 특정 브라우저 정보와 함께 요청을 보내야 합니다.
import pandas as pd
import requests
url = 'https://en.wikipedia.org/wiki/List_of_countries_and_dependencies_by_population'
headers = {'User-Agent': 'Mozilla/5.0'}
response = requests.get(url, headers=headers)
tables = pd.read_html(response.text)
print(f"Number of tables found: {len(tables)}")
print(tables[1].head())
네트워크 또는 VPN 사용: 가끔 특정 네트워크 또는 IP 주소가 차단되어 있을 수 있습니다. 다른 네트워크나 VPN을 사용해 보십시오.
캐시 및 쿠키 삭제: 웹사이트에서 일정한 데이터를 캐시할 수도 있으므로, 브라우저의 캐시 및 쿠키를 삭제하고 다시 시도해 보세요.
이와 관련해 유사한 문제를 다룬 질문과 답변을 아래에서 확인해보실 수 있습니다:
- pandas.read_html()로 읽기 시 오류 해결 방법: pandas의 read_html 관련 문제 발생 시 해결 방법을 제시합니다.
문제를 해결하지 못한다면, 오류 메시지를 추가로 공유해 주시면 보다 정확한 도움을 드릴 수 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.





감사합니다
다시 실행해보겠습니다.