일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- String Method
- 자료구조
- 코딩테스트
- Stack
- 파이썬
- 데이터시각화
- type hint
- 노마드코딩
- 정보처리기사 c언어
- javascript
- MySQL
- 백준
- NumPy
- Selenium
- pandas
- aws jupyter notebook
- openCV
- queue
- programmers
- 가상환경
- python
- Join
- dataframe
- Matplotlib
- 알고리즘 스터디
- 알고리즘스터디
- 프로그래머스
- 선그래프
- Algorithm
- 알고리즘
- Today
- Total
목록Python/Web Scraping (5)
조금씩 꾸준히 완성을 향해
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/c4zScM/btrMbxDrf3k/e7ILyEW4oZrvfMhjkikkx0/img.jpg)
Wait till Load Webpage(로딩 대기) 브라우저에서 해당 웹 페이지의 요소들을 로드하는데 걸리는 시간을 대기하는 것을 말한다. 웹 페이지가 로드되기도 전에 element가 존재하지 않는다는 error가 뜨는 걸 방지하기 위함이다. ▶ Implicit Waits(암묵적 대기) driver.implicitly_wait(secs) 브라우저에서 사용되는 엔진 자체에서 파싱을 기다려 주는 selenium 자체의 특수한 메소드이다. 여기서 중요한 부분은 지정값이 최대시간이라는 사실이다. 즉 파싱이 완료되면 코드가 즉시 샐행이 되고, 늦더라도 최대 n초까지는 기다려 준다는 뜻이다. ▶ Explicit Waits(명시적 대기) time.sleep(secs) 프로세스 자체를 지정한 시간동안 기다려 주는 역..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/cB9EF1/btrMacfslH9/ufTBZXDgtlJB6kMzDjZEHk/img.png)
한국관광공사 홈페이지에서 여행정보를 가져오는 와중에 예기치 못한 에러를 마주했다. selenium 사용 중에 click() 함수가 작동을 하지 않는 것이었다. 원래 이렇게 사이트에 봄여행을 검색해서 특정 페이지까지 텍스트 정보를 긁어오는 게 목적이었다. 여기 보이는 이 버튼을 클릭해서 이동하는 코드를 짜고 있는데, driver.find_element_by_xpath(f'//*[@class="page_box"]/*[@id={i}]').click() 이 코드에서 자꾸 에러가 떴다. ElementClickInterceptedException 이라고 한다. 분명 id 값을 제대로 가져온 게 맞고, 다른 버튼들은 또 잘 작동하니 어리둥절.... 구글링 해서 결국 해결책을 알아냈다. element가 HTML 상에는..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bxjh7F/btrL5xZWkfJ/WkH4UVV1IYuhpt3RIiUBPk/img.jpg)
selenium을 사용해서 네이버 로그인을 해보자. from selenium import webdriver import time # webdriver 경로 지정 driver = webdriver.Chrome("./chromedriver.exe") time.sleep(3) #시간 지연 3초 주기 #1. 네이버 이동 driver.get("http://naver.com") #2. 로그인 페이지로 이동 elem = driver.find_element_by_class_name("link_login") elem.click() time.sleep(3) 일단 네이버로 이동해서 로그인 페이지까지 갔다. 아이디, 비밀번호를 입력하려는데 문제가 하나 생겨버린다. driver.find_element_by_id('id').se..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/b5id07/btrL9JducmP/HgtOeSNZHjz5X8uliKsDak/img.jpg)
BeautifulSoup에 대한 기본적인 사용법을 정리해 보겠다. ▶ 기본 셋팅 #라이브러리 import import requests from bs4 import BeautifulSoup # 네이버 웹툰 url url = "https://comic.naver.com/index" res = requests.get(url) res.raise_for_status() # html 문서를 가져와서 lxml parser 혹은 html parser를 통해서 soup 객체로 생성 soup = BeautifulSoup(res.text, 'lxml') soup = BeautifulSoup(res.text, 'html.parser') ▶ 태그명 바로 가져오기 print(soup.title.get_text()) # title..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bCkgwI/btrLYlysmDp/XSjIThA0Modfkt748qtUF0/img.jpg)
requests 는 웹사이트 정보를 가져올 때 쓰이는 python library이다. 웹 스크래핑/크롤링에 아주 유용하게 쓸 수 있다. ▶ 기본 세팅 import requests res = requests.get("http://google.com") # url 정보 저장 res.raise_for_status() # 문제가 생겼을 경우 바로 에러를 내고 프로그램을 종료 먼저 설치 후 import 해 주고, 정보를 가져올 url를 지정해 준다. 그리고 에러를 대비하는 코드를 추가한다. print("응답코드", res.status_code) # 200이면 정상 사실 이렇게 status_code를 찍어보면 에러가 뜨는지 안뜨는지 확인을 할 수 있다. if res.status_code == requests.cod..