2026년 상식닷컴 선정 식당 & 카페 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요

셀레니움에서 페이지의 모든 이미지 URL을 수정하는 방법은?

_____
Q1: 셀레니움으로 페이지 내 모든 이미지의 URL을 어떻게 수정할 수 있나요?
A1: 셀레니움에서 자바스크립트 실행 기능을 사용해 모든 `` 태그의 `src` 속성을 원하는 URL로 변경할 수 있습니다. 예를 들어, Python을 사용할 경우 다음과 같이 작성할 수 있습니다.

```python
from selenium import webdriver

driver = webdriver.Chrome()
driver.get("https://example.com")

수정할 이미지 URL 패턴 (예: 모든 이미지를 같은 URL로 변경)
new_url = "https://newdomain.com/placeholder.jpg"

자바스크립트 코드로 모든 이미지 src 변경
script = f"""
var imgs = document.getElementsByTagName('img');
for(var i=0; i imgs[i].src = '{new_url}';
}}
"""
driver.execute_script(script)
```

---

Q2: 특정 조건에 따라 이미지 URL만 바꾸려면 어떻게 해야 하나요?
A2: 자바스크립트 내 조건문을 사용해 원하는 이미지들만 선택할 수 있습니다. 예를 들어, 원래 URL에 특정 문자열이 포함된 경우에만 변경하도록 할 수 있습니다.

```python
script = """
var imgs = document.getElementsByTagName('img');
for(var i=0; i if(imgs[i].src.includes('oldstring')) {
imgs[i].src = imgs[i].src.replace('oldstring', 'newstring');
}
}
"""
driver.execute_script(script)
```

---

Q3: 셀레니움에서 이미지가 완전히 로드된 후에 URL을 변경하려면 어떻게 해야 하나요?
A3: `WebDriverWait`와 `expected_conditions`를 사용해 이미지 요소들이 로드 완료됐는지 기다린 후 변경 작업을 수행하면 됩니다.

```python
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

wait = WebDriverWait(driver, 10)
wait.until(EC.presence_of_all_elements_located((By.TAG_NAME, 'img')))
driver.execute_script(script) 앞서 작성한 스크립트 사용
```

---

Q4: 이미지 URL 변경이 페이지에 즉시 반영되나요?
A4: 네, 자바스크립트로 `src` 속성을 변경하면 브라우저가 즉시 해당 이미지를 다시 로드합니다. 따라서 페이지에 즉각적으로 반영됩니다.

---

Q5: 변경된 이미지 URL을 가져오는 방법은?
A5: 아래와 같이 자바스크립트를 실행해 모든 이미지의 src를 리스트로 반환받을 수 있습니다.

```python
urls = driver.execute_script("""
var imgs = document.getElementsByTagName('img');
var srcs = [];
for(var i=0; i srcs.push(imgs[i].src);
}
return srcs;
""")
print(urls)
```

---

Q6: 동적으로 생성된 이미지도 포함하려면 어떻게 해야 하나요?
A6: 동적 이미지가 생성되는 시점까지 충분한 대기 시간을 주거나, 반복적으로 `execute_script`를 호출해 변경해줘야 합니다. 또는 MutationObserver 자바스크립트를 사용해 이미지 추가 시 자동으로 변경하는 스크립트를 삽입할 수도 있습니다.

---

Q7: 이미지 URL 변경 시 CORS나 보안 문제는 없나요?
A7: 페이지 내에서 이미지 URL이 변경돼도 셀레니움은 브라우저를 자동 제어하는 것이므로 별도의 CORS 제한을 받지 않습니다. 다만, 다른 도메인의 이미지를 로드할 때 해당 서버의 접근 정책에 따라 이미지가 로드되지 않을 수 있습니다.

---

요약:
- 셀레니움 `execute_script`로 모든 ``의 `src` 변경 가능
- 조건부 변경은 JS 코드 내에서 필터링
- 완전 로드 후 대기필요 시 `WebDriverWait` 사용
- 변경 후 즉시 이미지 갱신
- 변경된 URL은 JS 통해 모두 확인 가능
- 동적 생성 이미지 반영은 별도 처리 필요
- CORS 문제는 일반적으로 없음, 단 서버 응답 정책 문제 주의
셀레니움(Selenium)은 웹 애플리케이션을 자동화하는 데 사용되는 강력한 도구입니다.

웹 페이지의 모든 이미지 URL을 수정하는 작업은 특정 상황에서 유용할 수 있습니다.

예를 들어, 테스트 환경에서 이미지 URL을 변경하거나, 특정 도메인에서 이미지를 로드하도록 설정할 수 있습니다.

아래는 셀레니움을 사용하여 페이지의 모든 이미지 URL을 수정하는 방법에 대한 단계별 가이드입니다.

1. 셀레니움 설치 먼저, 셀레니움 라이브러리를 설치해야 합니다.

Python을 사용하는 경우, 다음 명령어를 통해 설치할 수 있습니다.

```bash pip install selenium ```

2. 웹 드라이버 설정 셀레니움을 사용하기 위해서는 웹 드라이버가 필요합니다.

Chrome 브라우저를 사용할 경우, ChromeDriver를 다운로드하여 설치해야 합니다.

ChromeDriver의 버전은 사용 중인 Chrome 브라우저의 버전과 일치해야 합니다.



3. 기본 코드 구조 아래는 셀레니움을 사용하여 웹 페이지를 열고 모든 이미지 URL을 수정하는 기본 코드 구조입니다.

```python from selenium import webdriver from selenium.webdriver.common.by import By 웹 드라이버 경로 설정 driver_path = 'path/to/chromedriver' ChromeDriver의 경로 driver = webdriver.Chrome(executable_path=driver_path) 웹 페이지 열기 driver.get()('https://example.com') 수정할 웹 페이지 URL 모든 이미지 요소 찾기 images = driver.find_elements(By.TAG_NAME, 'img') 이미지 URL 수정 for img in images: original_src = img.get_attribute('src') 원래 이미지 URL 가져오기 new_src = original_src.replace('http://old-domain.com', 'http://new-domain.com') URL 수정 driver.execute_script("arguments[0].setAttribute('src', arguments[1]);", img, new_src) 이미지 URL 변경 변경된 이미지 URL 확인 (선택 사항) for img in images: print(img.get_attribute('src')) 드라이버 종료 driver.quit() ```

4. 코드 설명 - 웹 드라이버 설정 : `webdriver.Chrome()`을 사용하여 Chrome 브라우저를 실행합니다.

`driver_path`는 ChromeDriver의 경로를 지정합니다.

- 웹 페이지 열기 : `driver.get()` 메서드를 사용하여 원하는 웹 페이지를 엽니다.

- 모든 이미지 요소 찾기 : `driver.find_elements(By.TAG_NAME, 'img')`를 사용하여 페이지의 모든 이미지 요소를 찾습니다.

- 이미지 URL 수정 : 각 이미지의 `src` 속성을 가져와서 원하는 방식으로 수정합니다.

이 예제에서는 특정 도메인을 다른 도메인으로 변경하는 방식으로 URL을 수정합니다.

- JavaScript를 사용하여 URL 변경 : `execute_script` 메서드를 사용하여 JavaScript를 통해 이미지의 `src` 속성을 변경합니다.

이는 DOM을 직접 수정하는 방법입니다.

- 변경된 이미지 URL 확인 : 수정된 이미지 URL을 출력하여 확인할 수 있습니다.

- 드라이버 종료 : 모든 작업이 끝난 후 `driver.quit()`을 호출하여 브라우저를 종료합니다.



5. 주의사항 - CORS 정책 : 웹 페이지에서 이미지를 로드할 때 CORS(Cross-Origin Resource Sharing) 정책에 따라 이미지가 로드되지 않을 수 있습니다.

이 점을 유의해야 합니다.

- 동적 콘텐츠 : 일부 웹 페이지는 JavaScript를 사용하여 동적으로 콘텐츠를 로드합니다.

이 경우, 이미지가 로드된 후에 URL을 수정해야 할 수 있습니다.

`WebDriverWait`을 사용하여 특정 요소가 로드될 때까지 기다릴 수 있습니다.

- 테스트 환경 : 실제 웹 페이지에서 URL을 수정하는 것은 권장되지 않으며, 테스트 환경에서만 수행해야 합니다.

이와 같은 방법으로 셀레니움을 사용하여 웹 페이지의 모든 이미지 URL을 수정할 수 있습니다.

필요에 따라 코드를 조정하여 다양한 요구 사항을 충족할 수 있습니다.

작성자: 최승현 [비회원] | 작성일자: 1년 전 2024-11-06 11:02:46
조회수: 152 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
내용이 부정확하다면 싫어요를 클릭해주세요.