tabela de raspagem com python com base em datas

Nov 28 2020

desde uma semana atrás, estou tentando raspar uma mesa deste site https://www.bi.go.id/id/moneter/informasi-kurs/transaksi-bi/Default.aspxmas não tenho ideia do que escrever, estou muito confuso. Iam tentando raspar tabela de transação kurs de 2015-2020 (20 nov 2015-20 nov 2020,

mas o problema é a ligação entre a data padrão e a data que eu escolhi ainda é a mesma. por favor me ajude de alguma forma, obrigado você antes !

import requests
from bs4 import BeautifulSoup
import pandas as pd
headers={
"User-Agent":"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.101 Safari/537.36",
"X-Requested-With":"XMLHttpRequest"
}
url = "https://www.bi.go.id/id/moneter/informasi-kurs/transaksi-bi/Default.aspx"
import requests
from lxml import html
response = requests.get(url)
content= response.content
print(content)

Respostas

1 gosalia Nov 29 2020 at 15:29

Você precisa usar o Selenium . Você pode instalar o Selenium e então instalar um driver . Eu uso o Chrome e, depois de instalá-lo, anote esse caminho e configurei o seu DRIVER_PATHpara o local

No código abaixo o que eu faço basicamente é solicitar o link que você postou e então eu insiro as datas que você pode alterar. Finalmente, clico no botão enviar. Isso gera a tabela dentro do intervalo de datas. Agora você pode escrever um código de acompanhamento para extrair as informações da tabela.

Código

import requests
from selenium import webdriver

DRIVER_PATH = 'Yourpath/chromedriver'
driver = webdriver.Chrome(executable_path=DRIVER_PATH)
driver.get('https://www.bi.go.id/id/moneter/informasi-kurs/transaksi-bi/Default.aspx')
start_date = driver.find_element_by_id("ctl00_PlaceHolderMain_biWebKursTransaksiBI_txtFrom")
start_date.send_keys("15-Nov-20")
end_date = driver.find_element_by_id("ctl00_PlaceHolderMain_biWebKursTransaksiBI_txtTo")
end_date.send_keys("20-Nov-20")
submit_button = driver.find_element_by_id("ctl00_PlaceHolderMain_biWebKursTransaksiBI_btnSearch1").click()