문과생도 크롤링 2주차 과제 100개 크롤링 실패기

단순한 페이지 1개 크롤링은 성공했지만 100개 링크 크롤링은 실패했습니다.

어디서 잘 못된건지 아직도 혼란스럽네요 ㅠㅠ

vod영상을 돌려보아도 어디서 어떻게 잘 못된건지 조차 진단이 안되요.

우선 공유해주신 트라필라투라로 크롤링 기초 실습 노션을 보고 따라했습니다.

[페이지 크롤링]>성공

1. 터미널에 pip install trafilatura 입력

  1. chat gpt가 짜준 코드 실행>성공

[네이버 스포츠 웹페이지 기사 100개 페이지 크롤링 도전]>실패

( https://sports.news.naver.com/wbaseball/index )

1.pip install requests beautifulsoup4 trafilatura 설치

  1. 파이썬 코드 작성

import requests

from bs4 import BeautifulSoup

import trafilatura

# 헤드라인 뉴스 링크를 크롤링하는 함수

def get_headline_links(url):

response = requests.get(url)

if response.status_code == 200:

soup = BeautifulSoup(response.content, 'html.parser')

# 헤드라인 뉴스 링크 선택자

links = soup.select('.headline_list a')

headline_links = ['https://sports.news.naver.com' + link['href'] for link in links if link['href'].startswith('/news?oid')]

return headline_links

else:

print("페이지를 불러오는데 실패했습니다.")

return []

# URL에서 텍스트를 크롤링하는 함수

def extract_text_from_url(url):

downloaded = trafilatura.fetch_url(url)

if downloaded:

result = trafilatura.extract(downloaded)

return result

else:

print(f"{url}에서 콘텐츠를 다운로드하는데 실패했습니다.")

return None

# 메인 실행 부분

headline_url = 'https://sports.news.naver.com/wbaseball/index'

headline_links = get_headline_links(headline_url)

for link in headline_links:

print(f"크롤링 중: {link}")

text = extract_text_from_url(link)

if text:

print(text)

print("\n" + "="*80 + "\n")


  1. 첫번째 크롤링했던 결과값이 나옴.


  1. 아래 메인 실행 부분이 잘 안됬나 싶어 CHAT GPT에게 도움요청.

    • 헤드라인 뉴스 URL을 지정하고, get_headline_links 함수를 사용하여 링크를 크롤링합니다.

    • 각 링크에 대해 extract_text_from_url 함수를 호출하여 텍스트를 추출하고 출력합니다.

  2. 새 코드를 짜줌

import requests

from bs4 import BeautifulSoup

import trafilatura

# 헤드라인 뉴스 링크를 크롤링하는 함수

def get_headline_links(url):

response = requests.get(url)

if response.status_code == 200:

soup = BeautifulSoup(response.content, 'html.parser')

# 헤드라인 뉴스 링크 선택자

links = soup.select('.headline_list a')

headline_links = ['https://sports.news.naver.com' + link['href'] for link in links if link['href'].startswith('/news?oid')]

return headline_links

else:

print("페이지를 불러오는데 실패했습니다.")

return []

# URL에서 텍스트를 크롤링하는 함수

def extract_text_from_url(url):

downloaded = trafilatura.fetch_url(url)

if downloaded:

result = trafilatura.extract(downloaded)

return result

else:

print(f"{url}에서 콘텐츠를 다운로드하는데 실패했습니다.")

return None

# 메인 실행 부분

def main():

headline_url = 'https://sports.news.naver.com/wbaseball/index'

headline_links = get_headline_links(headline_url)

for link in headline_links:

print(f"크롤링 중: {link}")

text = extract_text_from_url(link)

if text:

print(text)

print("\n" + "="*80 + "\n")

if name == '__main__':

main()


  1. 새 코드에도 여전히 첫번째 크롤링 결과값이나옴.


2
2개의 답글
지피터스 뉴스레터

이번 주 AI, 딱 쓸 것만

매주 월요일 오후,
읽고 바로 써먹을 AI 소식만