Selenium 기본
·
python/python_selenium
# 직접 웹브라우저를 컨트롤하여 webscraping # 현재 버전에 맞는 chrome driver.exe파일 다운로드해야됨 from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.common.keys import Keys # 현재 폴더에 있음 = ./, 적지 않아도 된다. browser = webdriver.Chrome() #"./chromedriver.exe" browser.get("") # selenium 문법이 변경되었다. # find_element_by_class_name 은 하단과 같이 명시되어야 함. # 꼭 from selenium.webdriver.common.by im..
CSV 기본
·
python/python_selenium
import csv import requests from bs4 import BeautifulSoup filename = "시가총액1-200.csv" # excel에서 열 때 한글이 깨지면 encoding을 `utf-8-sig`로 작성. # 파일을 쓰기모드로 오픈 후 파일객체를 csv.writer 에 넣음. f =open(filename, "w", encoding="utf-8-sig", newline="") writer = csv.writer(f) # string.split("구분자") = 구분자를 기준으로 string을 나눈 뒤 리스트로 삽입 title = "N종목명현재가전일비등락률액면가시가총액상장주식수외국인비율거래량PERROE".split("\\t") # writer.writerow를 통해 list ..
BeautifulSoup4 활용3
·
python/python_selenium
# 다음 영화 이미지 2018~2022 년 1~5순위 포스터 가져오기 import requests from bs4 import BeautifulSoup import lxml for year in range (2018, 2023): url = "" res = requests.get(url) res.raise_for_status() soup = BeautifulSoup(res.text, "lxml") images = soup.find_all("img", attrs={"class":"thumb_img"}) for idx,image in enumerate(images): image_url = image["src"] # image_url 가 `//`로 시작하면 앞에 https: 추가. if image_url.st..
BeautifulSoup4 활용2
·
python/python_selenium
# HTTP METHOD # get : 어떤 내용을 누구나 볼수 있게 url에 적어서 보내는 방식 # (한번 보낼때 데이터의 양이 제한이있어 큰 데이터를 보낼 수 없음) # post : url이 아닌 http body에 넣어서 보내는 방식 # (id/pw와 같은 보안이 필요한 업무, 큰 데이터 등을 보낼 수 있음) import requests import re from bs4 import BeautifulSoup for page in range(1,6): url = ""+str(page) header = {'User-Agent':"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 ..
BeautifulSoup4 활용1
·
python/python_selenium
import requests from bs4 import BeautifulSoup url = "" res = requests.get(url) res.raise_for_status() soup = BeautifulSoup(res.text, "lxml") # tistory 전체 제목 목록 가져오기 # class 속성이 tit_post인 모든 "strong" element를 반환 titles = soup.find_all("strong", attrs={"class":"tit_post"}) print(len(titles)) for title in titles : print(title.get_text()) find_all : 속성이 일치하는 모든 element를 리스트 형태로 반환 ## 가져온 값에 해당하는 정보 ..
BeautifulSoup4 기본
·
python/python_selenium
import requests from bs4 import BeautifulSoup url = "" res = requests.get(url) res.raise_for_status() # res.text 를 lxml파서를 통해 beautifulsoup 객체로 만듬. soup = BeautifulSoup(res.text, "lxml") # html 에서 첫번째로 발견되는 title 값을 가져옴. print(soup.title) # title값의 text값만 가져옴. print(soup.title.get_text()) print(soup.link) # link태그가 가지고있는 속성을 가져옴. print(soup.link.attrs) # link 태그 안의 특정 속성을 출력 print(soup.link['rel..
user agent
·
python/python_selenium
import requests url = "" # uster_agent를 입력함으로서 실제 크롬에서 접속하는것과 동일한 결과를 받을 수 있음. header = {'User-Agent':("Mozilla/5.0 (Windows NT 10.0; Win64; x64) " "AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36")} # 응답코드가 403이면 권한없음. res = requests.get(url, headers=header) # res.raise_for_status() print("응답코드 : ",res.status_code) # mygoogle.html 을 쓰기모드로 열고 res.text를 입력. with open("tistor..
정규식
·
python/python_selenium
import re def print_match(m): if m: print(m.group()) else: print("매칭되지 않음.") # . : 하나의 문자를 의미함. # (ca.e) : cake, care, case ... # ^ : 문자열의 시작 # (^de) : desk, demention, dev ... # $ : 문쟈열의 끝 # (se$) : case, rase, base ... # p에 ca.e의 패턴을 입력함. p = re.compile("ca.e") # 텍스트의 문자열의 처음부터 p패턴과 일치하면 match객체를 m에 삽입. # 일치하지 않으면 `None`이 삽입됨 m = p.match("good care") # 매칭되지 않으면 m.group() 출력 시, 에러가 발생함. print_m..