ตารางขูดด้วย python ตามวันที่

Nov 28 2020

ตั้งแต่สัปดาห์ที่แล้วฉันพยายามขูดตารางจากไซต์นี้ https://www.bi.go.id/id/moneter/informasi-kurs/transaksi-bi/Default.aspxแต่ฉันไม่รู้ว่าจะเขียนอะไรฉันสับสนมาก ฉันพยายามขูดตารางธุรกรรม kurs ตั้งแต่ปี 2015-2020 (20 พ.ย. 2015-20 พ.ย. 2020

แต่ปัญหาคือการเชื่อมโยงระหว่างวันที่เริ่มต้นและวันที่ที่เลือกยังคงเหมือนเดิมโปรดช่วยฉันด้วยวิธีใดก็ตามขอบคุณ คุณมาก่อน!

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)

คำตอบ

1 gosalia Nov 29 2020 at 15:29

คุณจำเป็นต้องใช้ซีลีเนียม คุณสามารถติดตั้งซีลีเนียมจากนั้นคุณสามารถติดตั้งไดรเวอร์ได้ ฉันใช้ chrome จากนั้นเมื่อคุณติดตั้งแล้วให้จดบันทึกเส้นทางนั้นและตั้งค่าของคุณDRIVER_PATHเป็นตำแหน่ง

ในโค้ดด้านล่างสิ่งที่ฉันทำคือขอลิงค์ที่คุณโพสต์จากนั้นฉันป้อนวันที่ที่คุณสามารถเปลี่ยนแปลงได้ ในที่สุดฉันก็คลิกที่ปุ่มส่ง ที่สร้างตารางภายในช่วงวันที่ ตอนนี้คุณสามารถเขียนโค้ดติดตามเพื่อดึงข้อมูลจากตารางได้

รหัส

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()