html 읽기 오류
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서버 차단정책문제라고 나오는데 확실한지 궁금합니다.
맞다면 영상수정이 필요할것 같구요
Answer 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 관련 문제 발생 시 해결 방법을 제시합니다.
문제를 해결하지 못한다면, 오류 메시지를 추가로 공유해 주시면 보다 정확한 도움을 드릴 수 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
[업데이트] 파이썬 패키지 부분에서 안되어서 강의 진행 불가
2
59
3
DataFrame groupby 사용관련 질문
1
90
2
pylint shell 사용법
0
71
2
자막오류 수정가능한가요?
0
79
1
복합 조건절 관련 궁금증
0
78
2
49.행맨 프로그램 - 재시도 횟수 관련.
1
76
1
64. 파이썬 입문자가 쉽게 빠지기 쉬운 몇가지 에러(혹은 로직)에 대해 알아보기
0
103
2
Replit UI가 업데이트 되서 강의 진행이 멈췄어요
2
178
3
Replit을 사용해보려고 하는데 영상처럼 진행이 안되네요
3
404
2
실무에서의 제네레이터 함수 사용에 관한 질문입니다.
0
64
2
영상이 소리만 나오고 영상은 안보입니다.
0
85
2
pandas 오류 질문
0
125
2
상속 질문
1
132
2
total을 float으로 바꾸신 이유
0
200
2
섹션2 ["환경 vs. 설정 vs. 구성"] 강의 자막 문의
0
141
1
파이썬 data insert to table
0
221
2
파이썬 Class Method 질문
0
154
2
timeit 쓸 때는 만들었던 함수를 재사용 할 수는 없는지?
0
131
2
__repr__ 와 __str__ 차이점?
0
204
2
class method vs static method
0
270
2
Type hint 문법의 Type Checking이 강제성이 있는지?
0
164
2
클래스 접근자 강의 복습부분 0:47에 오타가 있네요
0
104
2
수업 때 쓰셨던 txt file 공유 해주시면 좋겠습니다
1
177
1
shallow copy 질문 있습니다.
1
250
3

