카테고리 없음

파이썬 경기도 31개 시군 CI 휘장, 국기 이미지 다운 받기

도는머니 2022. 10. 3. 09:24
# 임포트함
# 콘솔 출력안되게
# https://wikidocs.net/21952#_2
# pyinstaller --onefile  --windowed  6_myproject/9_wikipia_list.py
# pip install pyinstaller

import time
import urllib
import chromedriver_autoinstaller
import requests
import os.path

from tkinter import filedialog
from bs4 import BeautifulSoup
from selenium import webdriver

chrome_ver = chromedriver_autoinstaller.get_chrome_version().split('.')[0]  # 크롬드라이버 버전 확인

try:
    options = webdriver.ChromeOptions()
    options.add_argument('headless')
    # options.add_argument('window-size=1920x1080')
    # options.add_argument("disable-gpu")
    browser = webdriver.Chrome(f'./{chrome_ver}/chromedriver.exe', chrome_options=options)
except:
    chromedriver_autoinstaller.install(True)
    browser = webdriver.Chrome(f'./{chrome_ver}/chromedriver.exe')

browser.implicitly_wait(1)

# 1. 네이버 이동
browser.get("http://naver.com")


file_path = ""

# 다운로드 경로 표시
def downLoadPathChoice():
    global file_path

    # 경로 창을 보여주고 폴더를 반환함
    folder_selected = filedialog.askdirectory()
    if folder_selected == "":  # 사용자가 취소를 누를 때
        print("폴더 선택 취소")
        return

    # 모든 데이터 삭제
    # txt_dest_path.delete(0, END)
    # 경로창에 데이터를 입력함
    # txt_dest_path.insert(0, folder_selected)

    file_path = folder_selected
    # filedialog.quit


def wikipia_download(sigun_name):
    global file_path
    # url = f'https://ko.wikipedia.org/wiki/{sigum_name}'
    # sigun_name = '수원시'
    sigun_name1 = urllib.parse.quote(sigun_name)

    url = f'https://ko.wikipedia.org/wiki/{sigun_name1}'

    print(sigun_name, url)
    # https://www.whatismybrowser.com/detect/what-is-my-user-agent/
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36'}

    # 페이지 불러오기
    res = requests.get(url, headers=headers)
    res.raise_for_status()
    # 파서
    soup = BeautifulSoup(res.text, "html.parser")
    # with open('test.html', 'w', encoding='utf8') as f:
    #     f.write(soup.prettify())
    # 파일에서 이미지 상세찾기
    target_img = soup.find('img', attrs={'class': 'thumbborder'})
    # 이미지 이름 찾기   Flag of Hwaseong.svg
    flag_name = target_img.get('alt')

    # 이미지페이지
    img_page_url = 'https://commons.wikimedia.org/wiki/File:' + target_img.get('alt').replace(' ', "_")

    browser.get(img_page_url)

    # 상세이미지로 이동하기
    res = requests.get(img_page_url,
                       headers=headers)
    # 상세이미지 파일 파서
    soup = BeautifulSoup(res.text, "html.parser")

    print(sigun_name, img_page_url, ('File:' + flag_name))

    # 이미지 파일 주소 갖고 오기
    target_img = soup.find('img', attrs={'alt': ('File:' + flag_name)}).get('src')

    # print('target_img')

    # 이미지 파일 태그 갖고 오기
    target_img_resp1 = requests.get(target_img)

    # print(target_img_resp1)
    # 파일 만들기
    with open(file_path+"\\"+sigun_name + ' 슬로건.jpg', 'wb') as out_file:
        out_file.write(target_img_resp1.content)
        print(sigun_name, '이미지 저장완료 ')


# 시군명 이름 들어가게 함
sigum_name_list = ['수원시', '용인시', '고양시', '성남시', '화성시', '부천시', '남양주시', '안산시', '평택시', '안양시', '시흥시', '김포시', '파주시', '의정부시',
                   '광명시', '하남시', '군포시', '오산시', '양주시', '이천시', '구리시', '안성시', '의왕시', '포천시', '양평군', '여주시', '동두천시',
                   '과천시', '가평군', '연천군', '광주시_(경기도)']
downLoadPathChoice()
print('저장경로는 : ', file_path)

os.startfile(file_path)

for sigun_name in sigum_name_list:
    wikipia_download(sigun_name)
    time.sleep(0.3)

browser.close()