과제 답안을 보지않고 스스로 구글링해서 만든 웹 크롤링 프로그램(10페이지 단위) 코드입니다.
752
61 câu hỏi đã được viết
import requests
from bs4 import BeautifulSoup
import urllib # 입력받은 input을 url로 변환
def web_crawler(keyword_input, pages=1):
# headers
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
}
# input -> url 변환
keyword = urllib.parse.quote(keyword_input)
print("파이썬 문자열을 url 코드로 변환:", keyword)
base_url = "https://www.google.com/"
# 10페이지까지 크롤링
for page in range(pages):
start = page * 10
search_url = f"{base_url}/search?q={keyword}&hl=ko&gl=KR&ceid=KR%3Ako&start={start}"
print("\n검색어와 조합한 url:", search_url)
# soup을 이용한 웹 크롤링 작업(headers 매핑 중요!)
response = requests.get(search_url, headers=headers)
html = response.text
# 응답 상태 확인
if response.status_code == 200:
soup = BeautifulSoup(html, "html.parser")
# h3 제목 추출
titles = soup.find_all("h3")
for title in titles:
print(title.get_text())
else:
print("에러:", response.status_code)
web_crawler("크롤링 잘하고 싶다", 1)
아무래도 구글은 무한스크롤 형식이라 페이지 별로 크롤링하기가 까다롭네요
Câu trả lời 2
0
import requests
from bs4 import BeautifulSoup
import pyautogui
keyword = pyautogui.prompt("검색어를 입력하세요>>>")
lastpage = pyautogui.prompt("마지막 페이지 번호를 입력해 주세요")
pageNum = 1
for i in range(1,int(lastpage)*10,10):
print(f"{pageNum}페이지 입니다.=====================")
response= requests.get(f"https://search.naver.com/search.naver?ssc=tab.news.all&where=news&sm=tab_jum&query={keyword}&start={i}")
html = response.text
soup = BeautifulSoup(html, 'html.parser')
links = soup.select(".news_tit")
for link in links:
title = link.text
url = link.attrs['href']
print(title,url)
pageNum = pageNum+1위와 같이 코드를 실행시키니, 저는 10페이지까지 크롤링하고 싶은데 1,11,21,31---91페이지 이런식으로 가져와집니다. 뭐가 문제일까요?
0
파이썬의 range 함수는 다음과 같이 range(start, end, step)로 실행하는데요, 10페이지까지 크롤링하고 싶으시면 단순하게 range(1, int(lastpage))+1)이라고 하시면 됩니다.
0
안녕하세요, 인프런 AI 인턴입니다.
Ambition님의 웹 크롤링 프로그램 코드 공유 감사합니다. 파이썬과 BeautifulSoup을 이용한 기본적인 크롤링 방법을 잘 구현해주셨네요. 구글 검색 결과의 무한 스크롤 특성상 정확히 10페이지 단위로 정보를 가져오는 것에 제약이 있을 수 있습니다. 실제로 페이지 파라미터인 start를 조절하여 크롤링을 시도하는 방식은 정상적인 사용 행태와 다를 수 있으며, 구글의 경우 잦은 요청이나 비정상적인 접근 패턴을 보이는 크롤링을 막기 위한 여러 방어 메커니즘이 있어 이를 고려한 접근이 필요합니다.
또한, 웹 서버에 과도한 요청을 보내는 웹 크롤링은 해당 서버에 부담을 줄 수 있으며, 이는 웹사이트의 이용 약관을 위반할 수도 있습니다. 개발하신 웹 크롤러를 사용할 때는 해당 사이트의 robots.txt 파일을 참고하시어 크롤링 허용 범위를 확인하는 것이 중요합니다.
추가적으로, 크롤링 시에는 대상 웹사이트의 서버 부하를 고려하여 적절한 지연 시간(delay)을 두는 것이 좋으며, 필요에 따라 User-Agent를 설정하는 것 외에도 쿠키나 세션을 관리해야 할 수도 있습니다.
크롤링 관련하여 더 깊이있는 이해를 원하시면, 인프런에서 제공하는 데이터 수집 및 처리 관련 강의를 추천받거나, 로드맵을 통해 체계적으로 학습 계획을 세워보시는 것도 좋은 방법입니다. 필요하신 경우 아래 링크를 이용하여 관련 정보를 확인하실 수 있습니다.
- 입문 강의 추천: https://www.inflearn.com/beginner
- 로드맵 찾아보기: https://www.inflearn.com/roadmaps
- 인프런 베스트셀러 강의: https://www.inflearn.com/tag-curation/tag/356
추가적인 질문이나 문의가 있으시면 인프런 홈페이지 내의 문의하기 기능을 통해 직접 문의하시면 됩니다.
Live server 를 이용 해보고 싶은데 확장메뉴 설치가 막혀 있어요
0
62
2
'팀 단위 AI 업무 혁신' 자문 관련하여 문의드리고자 합니다. (연락처 요청)
0
38
1
import requests from bs4 import BeatifulSoup 이 단계에서 안 되네요
0
75
2
requests 관련 질문
1
136
2
설치 관련
0
130
2
vs code 결과출력이 안됩니다
0
143
1
크롤링 관련 질문입니다
0
208
2
word wrap 체크 후에도 콘솔 한줄로 출력되는현상
0
190
1
주피터에서 pip오류가 계속납니다
0
1081
3
강의 "requests, Beautifulsoup4 사용법 빠르게 알아보기"에서 질문이있습니다.
0
170
2
네이버쇼핑 검색창 넘어가기전 팝업창이 안사라져요
0
364
1
html주소를 다른 컴터에서도 접속하기
0
241
2
pandas 설치하는데 오류가 나서요
0
2700
1
실행오류
0
213
1
네이버쇼핑 무한스크롤 안되시는분들 모바일네이버로 실습해보세요
0
263
1
뉴스 페이지에 페이지 번호가 없는데 어떻게 가져오나요?
0
231
2
네이버 쇼핑에 팝업창이 뜨기 시작했어요 도와주세요 ㅠㅠ
0
719
3
셀레니움 실습 시 창이 자동 차단되면서 꺼집니다.
0
663
2
낮은 가격순을 클릭하는 문을 추가하고싶습니다.
0
303
2
pip는 내부 또는 외부명령 ,실행할 수 있는 프로그램
0
3381
2
이런오류는 어떤 오류인가요
0
657
1
창이 두개떠요/쇼핑검색도 안되요 ㅜ
0
332
2
약간 변태(?)같지만 해당 코드를 깔끔하게 함수로 리팩토링해보았습니다
0
336
2
자동 로그인시 자동입력방지문자 페이지로 연결
0
2273
3

