본문 바로가기

전체 글92

[Python, Selenium] find_element를 통해 요소가 찾아지지 않는다면? 웹 크롤링 중 find_element 메서드를 이용해서 값이 찾아지지 않는다면, 아마 iframe이라는 태그가 존재해서일 것이다. iframe은 하나의 프레임을 만드는 태그인데, 쉽게 말하면 html 안에 따로 html을 담는 프레임이다. 따라서 프레임을 한 번 바꿔준 후에 find_element를 해줘야 한다. driver.find_element_by_id("searchIframe") #iframe 태그 엘리먼트 찾기 driver.switch_to.frame(element) #프레임 이동 driver.find_element(By.XPATH, '//*[@id="_pcmap_list_scroll_container"]/ul') 2022. 6. 18.
[Python] BeautifulSoup을 이용한 크롤링에서 한글 깨짐 해결 간단하게 인코딩이 안되기 때문인데, Soup 객체의 인자로 from_encoding 옵션을 utf-8로 주면 된다. soup = BeautifulSoup(res.content, 'html.parser', from_encoding='utf-8') requests.get()의 반환값을 res라 할 때, res.content와 res.text 두 가지가 있는데 text는 유니코드로, Content는 바이트로 결과를 반환한다고 한다. 주피터 노트북에서 실행 중인데, text로 받으면 자꾸 깨져서 content로 바꾸니 정상 작동. 2022. 6. 17.
백준 15651. N과 M(3) https://www.acmicpc.net/problem/15651 15651번: N과 M (3) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 수열을 구하는 문제인데, 중복되는 수가 와도 상관없다. 역시 백트래킹으로 해결했다. 다만 이 경우에 모든 자리에 모든 수가 와도 되므로 검사하는 알고리즘을 삭제하고 모든 try를 하면 된다. n, m = map(int, input().split()) arr = [] def dfs(): if len(arr) == m: print(' '.join(map(str, arr))) return for i .. 2022. 6. 17.
백준 15649. N과 M (1) https://www.acmicpc.net/problem/15649 15649번: N과 M (1) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 수열을 도출하는 방법 중 하나는 백트래킹을 이용하는 방법이다. 백트래킹이란 모든 경우의 수를 살피면서 조건이 맞으면 탐색을 계속하고, 조건에 맞지 않으면 노드 하나를 되돌아가는 양상을 띈다. n, m = map(int, input().split()) arr = [] def backtrack(): if len(arr) == m: print(' '.join(map(str, arr))) return .. 2022. 6. 16.