python selenium 자주쓴거 정리
from selenium import webdriver
from selenium.webdriver.support.ui import Select
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.alert import Alert
import time
import os
import shutil
import re
import pandas as pd
directory=r'<저장될 경로>'
options = webdriver.ChromeOptions()
############
# 창이 뜨지 않게 설정
options.add_argument('headless')
# 창 크기 조절 설정
options.add_argument('window-size=1920x1080')
options.add_argument("disable-gpu")
# F11 전체 화면 설정
options.add_argument('--start-fullscreen')
###############
# 기본 다운로드 경로 설정 /쓰지 말고 \\로 사용할 것.
options.add_experimental_option("prefs", {
"download.default_directory": directory,
"download.prompt_for_download": False,
"download.directory_upgrade": True,
"safebrowsing.enabled": True
})
#웹 열기
driver = webdriver.Chrome(executable_path='c:/selenium/chromedriver', chrome_options=options)
#될때까지 기다리게하기
wait= WebDriverWait(driver, 10)
temp2=wait.until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, "input#ststistic_period")))
#alert 팝업 확인하기
Alert(driver).text
#case 1
alert = driver.switch_to.alert
alert.accept()
#case 2
Alert(driver).accept()
#iframe 이동하기
# 상위로 이동
driver.switch_to.default_content()
driver.switch_to.frame(<iframe name>)
#iframe은 아닌데 비슷한게 있는듯.( 예 : chrome download)
shadow_root = driver.execute_script('return arguments[0].shadowRoot', <element>)
#select 버튼에 값 입력
Select(driver.find_element_by_css_selector(<CSS>)).select_by_value(<value>)
#캡처
driver.get_screenshot_as_file('<파일명>.png')
#driver 내에 열린 창 목록 가져오기
main=driver.window_handles[0]
#사용중인 창 바꾸기
driver.switch_to.window(driver.window_handles[pop])
#자바스크립트 보내기
driver.execute_script('$javascript:doSelect();')
#요소로 마우스 이동시키기
action=ActionChains(driver)
action.move_to_element(mainmenu)
그 외 참고
'python > crawling' 카테고리의 다른 글
[Selenium] 기상자료 크롤링 (1) | 2021.04.03 |
---|---|
크롤링과 python (0) | 2021.04.03 |
나라장터 open api crawling (0) | 2020.03.01 |
[나라장터] 크롤링 (2) | 2019.11.14 |
selenium 사용해서 위경도 가져오기 (0) | 2019.03.20 |
보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.
[공유할 폴더 만들기]
mkdir -p /home/pi/생성할 폴더
[마운트 하기]
sudo mount -t cifs -o username=유저이름,password=유저비밀번호 //192.168.<네트워크>.<경로>/Public/<폴더> /home/pi/생성한 폴더
[확인하기]
df -h
[자동 마운트하기]
sudo vi /etc/fstab <네트워크 경로 및 폴더> /home/pi/생성한폴더 cifs username=유저이름,password=유저비밀번호 0 0
[언마운트]
sudo umount //IPADRESS/share
'ubuntu' 카테고리의 다른 글
ubuntu LightGBM install (0) | 2020.04.14 |
---|---|
라즈베리파이 selenium 사용법 (0) | 2020.03.23 |
라즈베리파이 openCV 설치 및 관절 인식 (2) | 2020.02.13 |
jupyter-notebook에서 matplotlib 한글폰트 설정 (0) | 2020.02.13 |
파이썬 Selenium linux 환경 구축하기 (ubuntu) (0) | 2019.05.08 |
[postgreSQL] python에서 postgreSQL과 shape file 사용하기
postgeSQL 사용을 위한 SQL에 넣는 방법과 가져오는 방법¶
연결하기¶
import psycopg2
!conda install -c anaconda psycopg2 -y
conn = psycopg2.connect(
"host='<도메인>' dbname='<DB명>' user='<사용자명>' password='<비번>'")
cur = conn.cursor()
from sqlalchemy import create_engine
e = create_engine('postgresql://<사용자명>:<비번>@<도메인>:<port>/<DB명>')
파일 DB에 밀어넣기¶
cur.execute("""SELECT table_name FROM information_schema.tables
WHERE table_schema = 'public'""")
for table in cur.fetchall():
print(table)
import pandas as pd
score = pd.DataFrame(
{
'date': ['2019-07-28'] * 4,
'name': ['kim', 'lee', 'choi', 'park'],
'age': [19, 20, 19, 20],
'math_score': [91, 95, 92, 70],
'pass_yn': [True, True, True, False]
},
columns=['date', 'name', 'age', 'math_score', 'pass_yn'])
score
score.to_sql(name='score', con=e)
cur.execute("""SELECT table_name FROM information_schema.tables
WHERE table_schema = 'public'""")
for table in cur.fetchall():
print(table)
지도자료 밀어넣기¶
import pyproj
from fiona.crs import from_epsg
from sqlalchemy import *
from geoalchemy2 import Geometry
from geoalchemy2 import WKTElement
import geopandas as gpd
shp = gpd.read_file('./CTPRVN_201905/TL_SCCO_CTPRVN.shp', encoding='cp949')
shp
shp.plot(column='CTP_KOR_NM')
shp1 = shp.copy()
shp1.to_sql('a', e, if_exists='replace', index=False)
바로 넣으면 에러가 뜸 shapely를 활용할 예정
import shapely
test = shp1.geometry[1]
test
shapely.wkt.dumps(test)[1:100]
shapely.wkt.loads(shapely.wkt.dumps(shp1.geometry[1]))
shp1['geometry'] = shp1.apply(lambda x: shapely.wkt.dumps(x.geometry), axis=1)
shp1
type(shp1)
shp1.to_sql('a', e, if_exists='replace', index=False)
밀어넣기가 잘 된거 같으나 ...
import pandas as pd
shp1 = pd.read_sql('select * from a', e)
shp1
type(shp1)
가지고 오면 자료의 타입은 pandas 므로 geopandas 로 바꾸어 줘야되며
import geopandas as gpd
shp1 = gpd.GeoDataFrame(shp1)
type(shp1)
shp1.plot()
dump로 바꾼부분때문에 그림이 그려지지 않으므로 loads해주고 사용하여야 된다.
shp1['geometry'] = shp1.apply(lambda x: shapely.wkt.loads(x.geometry), axis=1)
shp1.plot()
shp.plot(column='CTP_KOR_NM')
동적인 그림 그리기¶
from fiona.crs import from_epsg
import folium
m = folium.Map(location=[40.730610, -73.935242],
tiles='Stamen Toner',
zoom_start=12,
control_scale=True,
prefer_canvas=True)
m
'python' 카테고리의 다른 글
pandas-profiling (0) | 2020.06.11 |
---|---|
anaconda 활용법 (0) | 2020.06.04 |
python 메일 보내기 (0) | 2020.02.24 |
jupyter notebook 가상환경에 basemap 설치하기 (0) | 2020.02.23 |
numpy 정리(1) (0) | 2020.02.18 |
나라장터 open api crawling
import pandas as pd
from bs4 import BeautifulSoup
import requests
import urllib
from urllib import parse
from datetime import datetime, timedelta
from datetime import date
import re
import math
today = date.today()
start=re.sub('-','',str(today - timedelta(days=60)))
end=re.sub('-','',str(today))
priceUp=2000000
priceDown=200000000000
key='오픈api'
link='http://apis.data.go.kr/1230000/BidPublicInfoService/getBidPblancListInfoServcPPSSrch?type=json&inqryDiv=1&dminsttNm='+parse.quote('해양수산부')+'&inqryBgnDt='+start+'&inqryEndDt='+end+'&pageNo=1&numOfRows=1&ServiceKey='+key
url = parse.urlparse(link)
query = parse.parse_qs(url.query)
base='http://apis.data.go.kr/1230000/BidPublicInfoService/getBidPblancListInfoServcPPSSrch?'
link=base+parse.urlencode(query, doseq=True)
request=urllib.request.urlopen(link).read().decode('utf-8')
n=math.ceil(json.loads(request)['response']['body']['totalCount']*.1)
n
page=1
link='http://apis.data.go.kr/1230000/BidPublicInfoService/getBidPblancListInfoServcPPSSrch?type=json&inqryDiv=1&dminsttNm='+parse.quote('해양수산부')+'&inqryBgnDt='+start+'&inqryEndDt='+end+'&pageNo='+str(page)+'&numOfRows=10&ServiceKey='+key
url = parse.urlparse(link)
query = parse.parse_qs(url.query)
link=base+parse.urlencode(query, doseq=True)
request=urllib.request.urlopen(link).read().decode('utf-8')
df=pd.DataFrame(json.loads(request)['response']['body']['items'])
df2=df[['bidNtceNm','asignBdgtAmt','bidBeginDt','bidClseDt','opengDt','bidMethdNm','cntrctCnclsMthdNm','dminsttNm','dminsttCd','bidNtceNo','reNtceYn','ntceKindNm','bidNtceDtlUrl']]
df2.rename(columns = {'asignBdgtAmt' : '배정예산','bidNtceNm':'공고명','bidBeginDt':'입찰개시일','bidClseDt':'입찰마감일'
,'opengDt':'개찰일시','bidMethdNm':'입찰방식','cntrctCnclsMthdNm':'계약체결방법','dminsttCd':'수요기관코드'
,'dminsttNm':'수요기관명','bidNtceNo':'입찰공고번호','reNtceYn':'재공고여부','ntceKindNm':'공고종류','bidNtceDtlUrl':'링크'}, inplace = True)
data=df2
data
'python > crawling' 카테고리의 다른 글
[Selenium] 기상자료 크롤링 (1) | 2021.04.03 |
---|---|
크롤링과 python (0) | 2021.04.03 |
python selenium 자주쓴거 정리 (0) | 2020.03.23 |
[나라장터] 크롤링 (2) | 2019.11.14 |
selenium 사용해서 위경도 가져오기 (0) | 2019.03.20 |
python 메일 보내기
gmail 접속> 우측 상단에 톱니바퀴모양 환경설정 클릭(아래 그림 참고) > 전달 및 POP/IMAP 클릭> IMAP사용


위를 아래와 같이 변경

gmail은 보안이 철저하므로 아래와 같이 설정이 필요함.


네이버는 아래 그림과 같이 환경설정 클릭


위와같이 설정


[Python] 파이썬으로 이메일 보내기
이번 포스팅에서는 파이썬에서 이메일을 사용하는 방법에 대해 알아보자. 사실 이메일을 보내기 위해서는 ...
blog.naver.com
http://hleecaster.com/python-email-automation/
파이썬 이메일 자동화 (이메일 대량 발송) - 아무튼 워라밸
회사에서 업무를 하다 보면 여러명에게 각각 다른 제목과 내용으로 (심지어 각각 다른 첨부파일을 포함해서) 이메일을 보내야 할 때가 있다. 손으로 보내긴 귀찮으니 파이썬으로 자동화하는 코드를 최대한 간단히 짜보았다.
hleecaster.com
'python' 카테고리의 다른 글
anaconda 활용법 (0) | 2020.06.04 |
---|---|
[postgreSQL] python에서 postgreSQL과 shape file 사용하기 (0) | 2020.03.15 |
jupyter notebook 가상환경에 basemap 설치하기 (0) | 2020.02.23 |
numpy 정리(1) (0) | 2020.02.18 |
주피터 노트북 변수 보기 및 실행시간 자동확인(Extensions) (0) | 2020.02.16 |