본문 바로가기

Python/Python_Crawling34

Selenium : 특정메뉴 클릭 및 입력방법 ○ 방법1 : Xpath 입력 - XPATH : //*[text()='메뉴명'] ma_driver.find_element(By.XPATH, '//*[@title="카페"]').click() ○ 방법2 : LinkText 입력 ma_driver.find_element(By.LINK_TEXT, '카페').click() ○ 방법3 :PARTIAL_LINK_TEXT 입력 : 상황 → 카페 클릭을 원할 시 ma_driver.find_element(By.LINK_TEXT, '카').click() #또는 ma_driver.find_element(By.LINK_TEXT, '페').click() ○ 방법4 :get_attribute("outerHTML"), .text 활용 : 상황 → 네이버 치지직 추천 클릭시 navs.. 2024. 2. 25.
Selenium : 기본 옵션세팅 □ 라이브러리 from selenium.webdriver.chrome.options import Options □ 옵션지정시 ma_option = Options() □ 옵션지정 시 ma_option.add_experimental_option("excludeSwitches", ["enable-automation"]) #드라이버 시작시 불필요문구 미표시되도록 설정 ma_option.add_experimental_option("excludeSwitches", ["enable-logging"]) #터미널상의 불필요문구 미표시되도록 설정 ma_option.add_argument("--headless") #드라이버창 안열리게 설정 ma_option.add_argument(f"user-agent={ma_agent}".. 2024. 2. 18.
Selenium 개요 □ 특징 ○ selenium은 웹 브라우저 작업을 자동화하기 위한 패키지임 ○ 브라우저 인스턴스를 원격으로 제어하고 사용자와 브라우저와의 상호작용 지원 ○ 웹 페이지에 텍스트 입력, 체크 박스 선택, 링크 클릭, 마우스 이동 및 임의의 JavaScript 실행 ○ 웹 페이지에서 자료를 수집하기 위한 RPA 구축 시 가장 많이 사용하는 패키지임 ○ BeautifulSoup에 비하면 속도가 느리고 메모리도 상대적으로 많이 사용함 ※ 셀레니움 4 크롬드라이버 자동으로 다운 ※ 최신 업데이트된 방식 사용 - 크롬 드라이버 자동 업데이트 코드 pip install selenium pip list #버젼확인 pip install webdriver-manager #웹드라이버 자동업데이트 #셀레니움 3점대라면 아래 코.. 2024. 2. 14.
특정 사이트 크롤링 및 데이터프레임 생성 □ 아래와 같은 형식으로 데이터를 표시하는 웹사이트 크롤링 후 크롤링한 데이터를 데이터프레임으로 저장해보자 #라이브러리 호출 from bs4 import BeautifulSoup from urllib.request import Request, urlopen import pandas as pd #사이트 url_base = 'http://www.chicagomag.com' url_sub = '/Chicago-Magazine/November-2012/Best-Sandwiches-Chicago/' html = urlopen(url) soup = BeautifulSoup(html, "html.parser") #크롤링 타겟태그 선택 target_area = soup.select('div.sammy') #크롤링 데이.. 2024. 2. 13.
쿠팡 : 상품 검색결과 중 로켓배송인 상품 크롤링 □ 내용 ○ 쿠팡에서 특정 키워드에 따른 검색결과 상품 들 중 로켓배송이 되는 품목만 크롤링 ○ 특이사항 - 변수명 = .select('li[class=search-product') → li 태그 중 클래스명이 정확히 search-product 인 것을 앞 코드와 같이 표현 ▶ .select('li.search-product')과 같이 쓰면 아래 이미지와 같이 특정 클래스명이 들어간것을 모두 파악하여 처리해야할 변수 및 정확도가 떨어짐 - continue 문 : 조건이 True이면 아래 코드까지 진행, 조건이 False면 위로 올라가서 코드실행 #로켓뱃지 rocket_pd = i.select_one('.badge.rocket') if rocket_pd: continue #로켓벳지가 없다면 위로 올라가서 .. 2024. 2. 13.
CGV 무비차트 크롤링 □ 과정 ○ 데이터 영역 Select_one으로 지정 ○ 영역에서 특정영역 Select 으로 지정 ○ 반복문을 활용해 '부모태그.클래스명 > 자식태그.클래스명'식으로 정확한 타겟 지정후 string으로 추출 * ('span.txt-info > strong').next_element 사용시 strong 태그가 열리고나서 출현하는 첫번째 텍스트 또는 태그값 가져옴. 도중 중간에 태그가 있다면 그 전까지만 가져옴. 하위 태그 및 텍스트까지 가져오고 싶다면 .find_next() 활용. 2024.02.07 개봉 □ 코드 및 결과 #라이브러리 호출 import requests from bs4 import BeautifulSoup #타겟 target_url = 'http://www.cgv.co.kr/movies/'.. 2024. 2. 11.
SSG 이벤트 크롤링 : select, find_all(string=True) □ .replace : 기존 A를 B로 바꿈 □ .strip() : 앞뒤 공백 제거 □ 태그활용법 : ('태그명'), ('.클래스명'), ('태그명.클래스명'), ('부모태그.클래스명 > 자식태그.클래스명'), ('태그')['속성'] □ select + find_all(string=True) vs select + select_one ○ 아래 코드보면 알 수 있듯이 select + select_one 방법이 정확한 데이터를 추출하고 전처리하기에도 수월함 ○ select+find_all 사용시 간편한 코드로 해당 영역의 텍스트를 신속하게 추출할 수 있지만 전처리하기에 불편함. * 개인적으로 select + select_one 추천 / 특정영역의 정확한 태그값을 지정함으로써 효율적으로 수집, 가공이 가능하기에.. 2024. 2. 9.
다음 뉴스(제목, 링크, 회사, 카테고리) 크롤링 □ 크롤링 대상 ○ 언론사 ○ 카테고리 ○ 기사제목 ○ 기사제목 안에 있는 상세페이지 링크 주소 #라이브러리 호출 import requests from bs4 import BeautifulSoup #크롤링 사이트 설정 target_url = 'https://news.daum.net/' #데이터 request 및 get. get한 데이터를 html.paser로 분리 req_data_area = requests.get(target_url, headers = headers) html_raw_data = req_data_area.text #해당영역에 있는 모든 텍스트 데이터 저장 html_raw_data_parsing = BeautifulSoup(html_raw_data, 'html.parser') #클래스 이.. 2024. 2. 5.
.text 와 .string 차이점(보완) # 라이브러리 호출 from bs4 import BeautifulSoup html = ''' 네이버 ''' #html.parser를 활용해 html 파싱 soup = BeautifulSoup(html, 'html.parser') #클레스네임이 logo_naver인것 활용 logo = soup.select_one(".logo_naver") print(f'text\t:\t{logo.text}\n.logo_naver 네임을 가진 태그의 모든 하위요소의 텍스트 추출. 좀 두루뭉실하게 사용하려면 사용') print('\n\n') print(f'string\t:\t{logo.string}\n정확하게 한개의 태그안에 텍스트가 있어야 인식하고 추출가능함. 빈칸, 빈줄이 있다면 무엇을 추출해야하는지 몰라함. 정확한 값을.. 2024. 2. 2.