selenium 使用可更改的表格进行网页搜罗

7kqas0il  于 2022-11-24  发布在  其他
关注(0)|答案(1)|浏览(128)

我已经成功地设法设置在一起的脚本现在提取一些信息从表在这个网站上:https://www.nordpoolgroup.com/en/Market-data1/Power-system-data/Production1/Wind-Power-Prognosis/SE/Hourly/?view=table
现在,我想对2021年的所有日期都这样做。我想我必须使用input id="data-end-date"并激活某种按钮推动器,但我不明白理论上如何做到这一点,也没有找到任何类似的问题。

options = webdriver.ChromeOptions()
options.add_experimental_option("detach", True)#optional
webdriver_service = Service("./chromedriver") #Your chromedriver path
driver = webdriver.Chrome(service=webdriver_service,options=options)

data = []
driver.get('https://www.nordpoolgroup.com/en/Market-data1/Power-system-data/Production1/Wind-Power-Prognosis/SE/Hourly/?view=table')
time.sleep(3)

WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, '//*[@class="pure-button"]'))).click()
time.sleep(1)

soup = BeautifulSoup(driver.page_source,"html.parser")

df1 = pd.read_html(str(soup))[1]
df1.drop(columns=['22-11-2022', 'SE'], inplace=True)
df1.drop(range(24,29), axis=0, inplace=True)
print(df1)
  • 谢谢-谢谢
h43kikqp

h43kikqp1#

你需要控制日期选择器并遍历所有的日期。另一种解决方案是查看浏览器的开发工具并分析从客户端到服务器的流量。
在这里,您可以看到,随着日期选择器的每一次更改,都会触发一个对服务器的GET请求,并返回一个包含所有数据的json。幸运的是,GET请求没有任何要求,甚至在浏览器中也能工作:
https://www.nordpoolgroup.com/api/marketdata/page/576?currency=,EUR,EUR,EUR&endDate=15-11-2022
而且,作为url参数,您甚至可以传递所需的日期。
响应是一个包含整个表的json,您只需要遍历2021年以来的所有日期并解析json数据。

相关问题