이 글은 playwright 라이브러리를 이용하여 웹 스크래핑을 진행하면서 발생한 오류 아닌 오류의 해결 방법에 대해 정리한 글이다.
이 글은 노마드 코더(Nomad Coders)님의 [Python으로 웹 스크래퍼 만들기] 강의를 보며 진행하는 과정에서 발생한 이슈에 대해 정리하였습니다.
https://nomadcoders.co/python-for-beginners
Python으로 웹 스크래퍼 만들기 – 노마드 코더 Nomad Coders
Python for Beginners
nomadcoders.co
문제점
간단히 증상을 이야기하면, playwright 라이브러리를 이용하여 웹 스크래핑을 진행할 때, headless
의 값이 True
이면 브라우저 창이 직접 뜨지 않고, False
로 설정되어 있으면 브라우저 창이 직접 뜬다.
...
browser = playwright.chromium.launch(headless=True)
...
여기서 이제 문제는 headless
를 False
로 설정했을 때에는 스크래핑이 정상적으로 되지만, True
로 설정했을 땐 스크래핑이 정상적으로 되지 않는다는 것이다.
해결 방법
의외로 해결 방법은 간단했다.
필자가 생각한 저런 오류의 원인은, 유저가 직접 사이트에 접속을 하였는가 여부라 생각하였다. 간단히 생각해서 브라우저 창이 뜰 때(headless=False
)는 사용자가 직접 웹 사이트에 접속하였다고 판단하지만, 브라우저 창이 뜨지 않고 진행될 때(headless=True
)는 사용자가 웹 사이트에 직접 접속한게 아니라 판단하여 Block을 한 것 같았다.
이를 해결하기 위해서 웹 페이지의 응답을 받아올 때, 사용자가 직접 접속했다고 속이기(?) 위해 user-agent
값을 인자로 넘겨주었다. user-agent
값은 페이지 검사 > Network에서 찾아볼 수 있다.
...
page = browser.new_page(user_agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36")
...
이렇게 user_agent
인자를 넘겨주면 headless
가 False
이든 True
이든 정상적으로 웹 스크래핑이 진행되는 것을 확인할 수 있다.
'Development > Python' 카테고리의 다른 글
파이썬 | 폴더에 있는 파일 리스트 불러오기 (with. os 라이브러리) (0) | 2024.03.15 |
---|