python selenium 자주쓴거 정리
python/crawling2020. 3. 23. 01:08
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 사용하기
python2020. 3. 15. 00:37
postgeSQL 사용을 위한 SQL에 넣는 방법과 가져오는 방법¶
연결하기¶
In [1]:
import psycopg2
In [3]:
!conda install -c anaconda psycopg2 -y
In [2]:
conn = psycopg2.connect(
"host='<도메인>' dbname='<DB명>' user='<사용자명>' password='<비번>'")
cur = conn.cursor()
In [3]:
from sqlalchemy import create_engine
e = create_engine('postgresql://<사용자명>:<비번>@<도메인>:<port>/<DB명>')
파일 DB에 밀어넣기¶
In [4]:
cur.execute("""SELECT table_name FROM information_schema.tables
WHERE table_schema = 'public'""")
for table in cur.fetchall():
print(table)
In [6]:
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'])
In [7]:
score
Out[7]:
In [8]:
score.to_sql(name='score', con=e)
In [9]:
cur.execute("""SELECT table_name FROM information_schema.tables
WHERE table_schema = 'public'""")
for table in cur.fetchall():
print(table)
지도자료 밀어넣기¶
In [11]:
import pyproj
from fiona.crs import from_epsg
from sqlalchemy import *
from geoalchemy2 import Geometry
from geoalchemy2 import WKTElement
In [14]:
import geopandas as gpd
shp = gpd.read_file('./CTPRVN_201905/TL_SCCO_CTPRVN.shp', encoding='cp949')
shp
Out[14]:
In [15]:
shp.plot(column='CTP_KOR_NM')
Out[15]:
In [20]:
shp1 = shp.copy()
In [21]:
shp1.to_sql('a', e, if_exists='replace', index=False)
바로 넣으면 에러가 뜸 shapely를 활용할 예정
In [27]:
import shapely
In [25]:
test = shp1.geometry[1]
test
Out[25]:
In [49]:
shapely.wkt.dumps(test)[1:100]
Out[49]:
In [29]:
shapely.wkt.loads(shapely.wkt.dumps(shp1.geometry[1]))
Out[29]:
In [30]:
shp1['geometry'] = shp1.apply(lambda x: shapely.wkt.dumps(x.geometry), axis=1)
In [31]:
shp1
Out[31]:
In [32]:
type(shp1)
Out[32]:
In [33]:
shp1.to_sql('a', e, if_exists='replace', index=False)
밀어넣기가 잘 된거 같으나 ...
In [34]:
import pandas as pd
shp1 = pd.read_sql('select * from a', e)
shp1
Out[34]:
In [35]:
type(shp1)
Out[35]:
가지고 오면 자료의 타입은 pandas 므로 geopandas 로 바꾸어 줘야되며
In [36]:
import geopandas as gpd
shp1 = gpd.GeoDataFrame(shp1)
type(shp1)
Out[36]:
In [37]:
shp1.plot()
dump로 바꾼부분때문에 그림이 그려지지 않으므로 loads해주고 사용하여야 된다.
In [38]:
shp1['geometry'] = shp1.apply(lambda x: shapely.wkt.loads(x.geometry), axis=1)
In [39]:
shp1.plot()
Out[39]:
In [40]:
shp.plot(column='CTP_KOR_NM')
Out[40]:
동적인 그림 그리기¶
In [41]:
from fiona.crs import from_epsg
In [42]:
import folium
m = folium.Map(location=[40.730610, -73.935242],
tiles='Stamen Toner',
zoom_start=12,
control_scale=True,
prefer_canvas=True)
In [43]:
m
Out[43]:
In [ ]:
'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
python/crawling2020. 3. 1. 19:09
In [1]:
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
In [2]:
today = date.today()
start=re.sub('-','',str(today - timedelta(days=60)))
end=re.sub('-','',str(today))
priceUp=2000000
priceDown=200000000000
key='오픈api'
In [4]:
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)
In [5]:
request=urllib.request.urlopen(link).read().decode('utf-8')
n=math.ceil(json.loads(request)['response']['body']['totalCount']*.1)
n
Out[5]:
In [6]:
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
In [7]:
data
Out[7]:
In [ ]:
'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 메일 보내기
python2020. 2. 24. 00:09
gmail 접속> 우측 상단에 톱니바퀴모양 환경설정 클릭(아래 그림 참고) > 전달 및 POP/IMAP 클릭> IMAP사용
위를 아래와 같이 변경
gmail은 보안이 철저하므로 아래와 같이 설정이 필요함.
네이버는 아래 그림과 같이 환경설정 클릭
위와같이 설정
http://hleecaster.com/python-email-automation/
'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 |