2017-10-07 4 views
-3

私はPythonの初心者です。毎週ダイナミックマップを保存するために、コードをスクレイピングするコードの助けが必要です。 これはsiteです。興味があります。 目的は、ページにアクセスし、季節を選択し、週を選択し、ローカルフォルダに画像をダウンロードすることです。このイメージを使用して、SASを使用して自動週報に統合します。ナビゲーションコントローラ付きのPythonによるウェブスクラブ

ありがとうございます!

+1

どのようなヘルプが必要ですか? –

+0

私はコードに助けが必要...私はスパイダー上で.pngファイルを保存するために実行することができます。 – Arthuro

+0

これまでに何を試しましたか?まさにあなたが問題を抱えている場所を示すコード例を提供するべきです。それがなければ、ここで助けを受けることはまずありません。 –

答えて

0
import sys 
import os 
import time 
from selenium.webdriver.firefox.firefox_profile import FirefoxProfile 
from selenium import webdriver 
import arrow 

BASE_URL = 'https://gis.cdc.gov/grasp/fluview/main.html' 
DOWNLOAD_PATH = "/Users/" 

def closeWebDriver(driver): 

    if os.name == 'nt': 
     driver.quit() 
    else: 
     driver.close() 

def getImage(): 

    profile = FirefoxProfile() 

    profile.set_preference("browser.download.panel.shown", False) 
    profile.set_preference("browser.helperApps.neverAsk.openFile","image/png") 
    profile.set_preference("browser.helperApps.neverAsk.saveToDisk", "image/png") 
    profile.set_preference("browser.download.folderList", 2); 
    profile.set_preference("browser.download.dir", DOWNLOAD_PATH) 

    driver = webdriver.Firefox(firefox_profile=profile) 

    driver.get(BASE_URL) 

    time.sleep(5) 

    if not isValidTimeFrame(driver): 
     print('Not the time to download yet!') 
     closeWebDriver(driver) 
     return 

    selectFirstWeek(driver) 

    print('- Consume the web.') 
    wrapper = driver.find_element_by_class_name('downloads-help-area') 

    download_img_els = wrapper.find_elements_by_class_name('downloads-button') 

    for el in download_img_els: 
     text = el.text.encode('utf-8') 
#  print(text) 
     if 'download image' == text.strip().lower(): 
      # Process 
      downloadImage(el) 
      break 

    time.sleep(5) 
    closeWebDriver(driver) 


def isValidTimeFrame(driver): 
    seasons_button = driver.find_element_by_class_name('seasons-button') 
    time_frame = seasons_button.text.encode('utf-8').strip().lower() 
    current_year = arrow.now().to('local') 
    current_year_str = current_year.format('YYYY') 
    next_year = current_year.shift(years=1) 
    next_year_str = next_year.format('YY') 
    print(time_frame) 
    compare_year = '%s-%s' % (current_year_str, next_year_str) 

    return time_frame == compare_year 

def selectFirstWeek(driver): 
    prev = driver.find_element_by_id('prevMap') 
    week = driver.find_element_by_id('weekSlider') 

    while True: 
     print(week) 
     current_number = week.get_property('value') 
     print('- Week: ' + current_number) 
     prev.click() 
     if int(current_number) < 2: 
      break; 

    time.sleep(1) 


def downloadImage(el): 
    print('- Click on ' + el.text) 
    el.click() 


getImage() 
関連する問題