inflearn logo
강의

Khóa học

Chia sẻ kiến thức

Từ cơ bản đến nâng cao Python do kỹ sư Silicon Valley giảng dạy

Đọc và ghi tệp DataFrame trong Pandas

html 읽기 오류

Đã giải quyết

89

dlclxkzk87

5 câu hỏi đã được viết

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 알고리즘 선물하기-좋은

Câu trả lời 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

91

2

pylint shell 사용법

0

71

2

자막오류 수정가능한가요?

0

79

1

복합 조건절 관련 궁금증

0

79

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