강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của ricril
ricril

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

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

Đọc và ghi file Dataframe của Pandas(판다스)

html 읽기 오류

Viết

·

29

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님의 프로필 이미지
altoformula
Người chia sẻ kiến thức

안녕하세요 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())
dlclxkzk87님의 프로필 이미지
dlclxkzk87
Người đặt câu hỏi

감사합니다

다시 실행해보겠습니다.

0

안녕하세요, 인프런 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. 캐시 및 쿠키 삭제: 웹사이트에서 일정한 데이터를 캐시할 수도 있으므로, 브라우저의 캐시 및 쿠키를 삭제하고 다시 시도해 보세요.

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

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

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

Hình ảnh hồ sơ của ricril
ricril

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

Đặt câu hỏi