Parce data, Python - PullRequest
       7

Parce data, Python

0 голосов
/ 06 ноября 2018

Я интересен в Python. Мне нужно проанализировать данные у Фреда (https://fred.stlouisfed.org/series/A191RI1A225NBEA)). Итак, мне нужно попросить Python зайти на этот сайт и затем нажать кнопку «Загрузить», а затем нажать кнопку «CSV (данные)» и сохранить эти данные в Python На самом деле, есть большая проблема с этой задачей, я попытался использовать из селена:

selenium.webdriver.common.keys import Keys
browser = webdriver.Chrome('/Users/davidabramyan/Downloads/chromedriver 3')
browser = browser.get('https://fred.stlouisfed.org/series/A191RI1A225NBEA')
elm = browser.find_element_by_link_text('Download')
browser.implicitly_wait(5)
elm.click()

И с помощью BeautifulSoup:

response = urllib.request.urlopen(url)
return response.read()

def parse(html):
soup = BeautifulSoup(html, 'lxml')
table = soup.find('span', class_='pull-right col-xs-1')
rows = table.find('fg-download-menu')
print(table.prettify())

def main():
parse(get_html('https://fred.stlouisfed.org/series/A191RI1A225NBEA#0'))

if __name__ == '__main__':
main()

Но это не работает. Я думаю, что Beautifulsoup лучше, но там я не могу понять, как это сделать. Не могли бы вы помочь мне? Заранее спасибо!

1 Ответ

0 голосов
/ 06 ноября 2018

Вы не можете использовать BeautifulSoup, потому что URL загрузки для "CSV (данные)" генерируется ajax

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait

browser = webdriver.Chrome('/Users/davidabramyan/Downloads/chromedriver 3')
# make sure above is chromedriver executable path not directory
wait = WebDriverWait(browser, 10)
browser.get('https://fred.stlouisfed.org/series/A191RI1A225NBEA')

dlButton = browser.find_element_by_id("download-button")
dlButton.click()
wait.until(lambda driver: browser.execute_script("return $('#download-data-csv').attr('href') != '#'"))
dlButton = browser.find_element_by_id("download-data-csv")
dlButton.click()

# get url to download with python
# csv_download_url = dlButton.get_attribute('href')
# csv_file = urllib2.urlopen(download)
# ....
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...