본문 바로가기

전체 글339

[크롤링] 셀레늄(selenium) 활용 ; nate 검색어 1위부터 10까지 가져오기(동적화면에서의 크롤링) 동적화면 크롤링하기 🧐 동적화면에서 검색어 가져오기 다음 네이트 메인 화면의 실시간 이슈 키워드 10개를 뽑아보자. 이 화면의 특징은 1~5위가 나타난 다음, 6~10위가 나타나는 식이다. 10개 키워드가 한번에 나타나지 않으므로 유의가 필요하다! 라이브러리 Import from selenium import webdriver from selenium.webdriver.chrome.service import Service as ChromeService from webdriver_manager.chrome import ChromeDriverManager from selenium.webdriver.common.keys import Keys from selenium.webdriver.common.by impor.. 2023. 8. 8.
[크롤링] 셀레늄(selenium) 활용 ; 구글 검색 후 이미지 다운로드 셀레늄 활용하여 크롤링하기 webdriver-manager 라이브러리를 활용하여 크롬드라이버의 지속적 업데이트 없이 크롤링 하는 법 1. 라이브러리 설치 pip install webdriver-manager 2. 셀레늄 활용 기본 코드 기본적으로 활용할 수 있는 코드는 아래 네 줄이다. drivers.get() 에 웹사이트 주소를 입력하면 된다. 셀레늄 코드 작성 팁 : 사람이 찾는것과 동일한 동선을 떠올리며 코드를 작성한다 # 아래 네 줄을 계속 활용하면 됨! from selenium import webdriver from selenium.webdriver.chrome.service import Service as ChromeService from webdriver_manager.chrome impor.. 2023. 8. 8.
[API 다루기] XML > JSON > dataframe 변환하기 👾 공공데이터 포털의 부동산 실거래가 자료를 가져와보자. requests, pandas 두 개의 라이브러리를 import 인증키와 페이지번호, 페이지당 결과수, 지역코드, 계약 월은 format 문자열로 처리하여 유동적으로 선택할 수 있게 한다. url 기본형을 문자열로 입력하고, 위의 항목들을 { } 안에 넣어 포맷팅한다. req 에 url로부터 xml 데이터 요청하고, req.text로 이를 확인한다. import requests import pandas as pd serviceKey = "인증키" pageNo = 1 # 페이지 번호 numOfRows = 1000 # 한 페이지 결과수 LAWD_CD = 11560 # 지역코드 DEAL_YMD = 202307 # 계약월 url = f'http://ope.. 2023. 8. 7.
[API 활용] xml 파일 데이터프레임으로 변환 (read_xml) xml 파일 ▶︎ pandas 데이터프레임으로 서울시 열린데이터 광장 API 를 가지고 예제 진행 원하는 컬럼들만 가져와서 처리가 편한 pandas dataframe으로 변환 read_xml 메서드로 쉽게 xml 파일을 변환할 수 있음 원하는 컬럼을 지정하고, 컬럼명도 바꿔준다 결측치가 있는 경우, 이를 제외하고 인덱스를 리셋 import pandas as pd import xml.etree.ElementTree as ET import requests url = "http://openapi.seoul.go.kr:8088/인증키/xml/tbLnOpendataRtmsV/1/5/" response = requests.get(url) df = pd.read_xml(response.content) select_c.. 2023. 8. 7.
[API 다루기] XML 파일을 pandas 데이터프레임으로 XML 파일을 pandas 데이터프레임으로 만들기 🧑🏻‍💻 코드 해석 url 변수에 주어진 URL로 HTTP 요청을 보내고, 그에 대한 응답을 response 변수에 저장 ET.fromstring(response.content)를 사용하여 response 변수에 저장된 XML 데이터를 ElementTree 객체로 파싱 data_list라는 빈 리스트를 만들기 >> 이 리스트는 나중에 데이터프레임을 만들기 위해 각 행을 딕셔너리 형태로 담을 것 root.findall('.//item')를 사용하여 XML 데이터에서 'item'라는 태그의 모든 요소들을 찾기 각 item 태그에서 필요한 정보를 추출하여, data 딕셔너리에 저장 data_list에 모든 행에 해당하는 딕셔너리들이 저장됨 pd.DataFram.. 2023. 8. 7.
[API 다루기] XML 데이터를 pandas 데이터프레임으로 앞 포스팅에서 다룬 동일한 데이터를 xml 파일로 불러왔다. xml 파일을 pandas 데이터프레임으로 변환하는 법을 알아보자. 🧑🏻‍💻 코드 해석 1. requests.get(xml_url)를 사용하여 주어진 URL로 HTTP 요청을 보내고, 그에 대한 응답을 req 변수에 저장 2. BeautifulSoup(req.text, "lxml")를 사용하여 req 변수에 저장된 XML 데이터를 BeautifulSoup 객체로 파싱 3. find_all 메서드를 사용하여 'stddate' 태그와 'timeavg' 태그를 모두 찾기 4. zip 함수를 사용하여 'stddate_list'와 'timeAvg_list'를 동시에 순회하면서 해당 태그들의 텍스트 값을 가져와 'stddate'와 'avgTime' 리스트.. 2023. 8. 7.
[API 다루기] JSON 데이터를 pandas 데이터프레임으로 API 데이터 찾기 본 예제에서는 한국도로공사 고속도로 공공데이터 포털을 이용해본다. http://data.ex.co.kr/dataset/datasetList/list?pn=1&CATEGORY=TR&GROUP_TR=TIME_TCS 2023. 8. 7.
[웹 크롤링] 주식 일별 시세를 데이터프레임으로 저장하기 주식 일별 시세 >> dataframe으로 결합하기 다음과 같은 종목별 일별 시세 내용을 데이터 프레임으로 저장할 수 있도록 크롤링 해보자 1. 라이브러리 import import requests from bs4 import BeautifulSoup import pandas as pd from fake_useragent import UserAgent 2. 데이터를 가져올 수 있는 함수 정의 🔎 getData() 함수의 입력 파라미터는 다음과 같다 url: 데이터를 스크래핑할 웹 페이지의 URL com_code: 크롤링할 종목코드 soup: (다른 함수에서 return 할 값, 다른 함수 참고) page: 스크래핑할 페이지 수 (예, 1 페이지부터 ~ 10페이지까지 크롤링할 경우 >> 10) df 와 co.. 2023. 8. 5.
[웹 크롤링] 네이버 증권에서 '종목코드', '상장회사', '주가' 크롤링하기 주가 크롤링하기 다음과 같이 네이버 증권 페이지에서 종목코드 별로 상장회사와 주가를 확인하는 결과를 출력해보자. 가져오고 싶은 정보는 웹페이지에서 다음과 같다. getSoup 함수 크롤링하려는 대상의 url을 작성한다. 그런데 다음과 같이 종목코드별로 웹페이지가 다름을 알 수 있다. 따라서 getSoup의 인자로 com_code(종목번호)를 받고, 이를 url 끝에 결합하도록 했다. UserAgent 라이브러리로 custom_header 작성 : 크롤링하는 사용자 정보를 서버에 전달 이전 예제와 동일하게 req 객체에 웹의 데이터를 가져와 저장 soup 객체에 html 데이터를 텍스트로 변환 return 값을 soup으로 한다 getPrice 함수 com_code(종목번호)를 인자로 받아, 바로 getS.. 2023. 8. 4.
728x90