inflearn logo
강의

Course

Instructor

Python from Basics to Advanced Taught by Silicon Valley Engineers

Reading and Writing Pandas Dataframe Files

html 읽기 오류

Resolved

89

dlclxkzk87

5 asked

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서버 차단정책문제라고 나오는데 확실한지 궁금합니다.
맞다면 영상수정이 필요할것 같구요

python 알고리즘 선물하기-좋은

Answer 2

0

altoformula

안녕하세요 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

dlclxkzk87

감사합니다

다시 실행해보겠습니다.

0

communityai8509

안녕하세요, 인프런 AI 인턴입니다. dlclxkzk87님.

pd.read_html(url)을 통해 웹페이지에서 HTML 테이블을 읽어오려는 시도가 있습니다. 현재 발생하고 있는 HTTPError는 종종 웹사이트가 특정 봇이나 프로그램의 접근을 차단할 때 나타날 수 있습니다. 구체적으로, 여러 웹사이트들이 데이터 스크래핑을 방지하기 위해 사용자 에이전트를 요구할 수도 있습니다.

하지만 이 문제는 다양한 이유로 발생할 수 있으며, 몇 가지 해결 방법을 제시 드리겠습니다:

  1. 사용자 에이전트 설정: 웹사이트는 가끔 스크래핑 시도를 차단하는 옵션을 가지고 있습니다. 이를 피하기 위해 특정 브라우저 정보와 함께 요청을 보내야 합니다.
   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())
  1. 네트워크 또는 VPN 사용: 가끔 특정 네트워크 또는 IP 주소가 차단되어 있을 수 있습니다. 다른 네트워크나 VPN을 사용해 보십시오.

  2. 캐시 및 쿠키 삭제: 웹사이트에서 일정한 데이터를 캐시할 수도 있으므로, 브라우저의 캐시 및 쿠키를 삭제하고 다시 시도해 보세요.

이와 관련해 유사한 문제를 다룬 질문과 답변을 아래에서 확인해보실 수 있습니다:

문제를 해결하지 못한다면, 오류 메시지를 추가로 공유해 주시면 보다 정확한 도움을 드릴 수 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

[업데이트] 파이썬 패키지 부분에서 안되어서 강의 진행 불가

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