웹 스크레이핑은 인터넷에서 데이터를 수집하는 강력한 도구입니다. 그러나 일부 웹 사이트는 스크레이핑을 방지하기 위해 IP 주소 제한 또는 차단을 실시할 수 있습니다. 이러한 경우 프록시 서버를 사용하여 스크레이핑을 수행할 수 있습니다.
프록시는 중계 서버로, 웹 사이트와의 통신을 대리하여 IP 주소를 숨기고 익명으로 웹 페이지에 액세스할 수 있게 해줍니다. Beautiful Soup 4는 웹 스크레이핑을 위한 훌륭한 라이브러리이며, 프록시를 사용하여 웹 스크레이핑을 더욱 효과적이고 안전하게 수행할 수 있습니다.
프록시 설정
먼저, 프록시 서버를 사용하기 위해 프록시 IP 주소와 포트 번호를 설정해야 합니다. 아래의 예제 코드에서는 proxy_ip
와 proxy_port
변수에 프록시 서버의 IP 주소와 포트 번호를 할당합니다.
import requests
proxy_ip = "123.45.67.89"
proxy_port = 8080
proxies = {
"http": f"http://{proxy_ip}:{proxy_port}",
"https": f"https://{proxy_ip}:{proxy_port}",
}
response = requests.get("https://www.example.com", proxies=proxies)
이 예제에서는 requests
라이브러리를 사용하여 HTTP 또는 HTTPS 프록시를 설정합니다. proxies
변수에 http
와 https
프록시를 설정하고 있습니다. 그리고 requests.get()
함수를 호출할 때 proxies
옵션을 추가하여 프록시를 적용합니다.
Beautiful Soup 4와 함께 프록시 사용
프록시를 사용하여 웹 페이지에 액세스한 후, Beautiful Soup 4를 사용하여 HTML 데이터를 추출하는 것이 가능합니다. 아래의 예제 코드는 프록시를 사용하여 웹 페이지에 액세스한 후, Beautiful Soup 4를 사용하여 페이지의 제목을 추출합니다.
from bs4 import BeautifulSoup
import requests
proxy_ip = "123.45.67.89"
proxy_port = 8080
proxies = {
"http": f"http://{proxy_ip}:{proxy_port}",
"https": f"https://{proxy_ip}:{proxy_port}",
}
response = requests.get("https://www.example.com", proxies=proxies)
soup = BeautifulSoup(response.content, "html.parser")
title = soup.title.text
print(title)
위의 코드를 실행하면 해당 웹 페이지의 제목이 출력됩니다. 이제 프록시를 사용하여 웹 스크레이핑 작업을 수행할 수 있습니다.
프록시를 사용하는 것은 웹 스크레이핑을 안전하게 수행하는 한 가지 방법입니다. 그러나 해당 웹 사이트의 서비스 약관에 위배될 수 있으므로 항상 해당 웹 사이트의 정책을 확인하고 합법적인 목적으로만 사용해야 합니다.